vi和vim 操作笔记
博客专区 > Junn 的博客 > 博客详情
vi和vim 操作笔记
Junn 发表于5年前
vi和vim 操作笔记
  • 发表于 5年前
  • 阅读 274
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

Linux中vi(vim)编辑器的使用

Ubuntu下vim的设置


Vi有三种基本的工作模式:指令行模式、文本输入模式、行末模式。

指令模式(Command Mode) 下输入  a、i、o进入文本输入模式(Input Mode)
文本输入模式(Input Mode) 下按ESC进入指令模式(Command Mode)
指令模式(Command Mode)下输入:进入末行模式(Last line Mode)
末行模式(Last line Mode)下指令错误则返回指令模式(Command Mode)

下面分别介绍这三种模式:

1、指令模式(Command Mode)
指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。
0  -----光标移动至行首
h  -----光标左移一格
l  -----光标右移一格
j  -----光标下移一行
k  -----光标上移一行
$+A-----将光标移动到该行最后
PageDn ----- 向下移动一页
PageUp ----- 向上移动一页
d+方向键 -----删除文字
dd -----删除整行
pp -----整行复制
r  -----修改光标所在的字符
S  -----删除光标所在的列,并进入输入模式

2、文本输入模式(Input Mode)
在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。
a -----在光标后开始插入
A -----在行尾开始插入
i -----从光标所在位置前面开始插入
I -----从光标所在列的第一个非空白字元前面开始插入
o -----在光标所在列下新增一列并进入输入模式
O -----在光标所在列上方新增一列并进入输入模式
ESC -----返回命令行模式

3、末行模式(Last line Mode)
末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下
:q -----结束Vi程序,如果文件有过修改,先保存文件
:q! -----强制退出Vi程序
:wq  -----保存修改并退出程序
:set nu -----设置行号

需要注意的是,以上指令都是在英文输入模式下才有效,在linux 终端下有时我们用的是中文输入模式,输入中文的“:”就不能转换模式了。

0.关于保存

首先需要用vi编辑器打开文件:如 vi index.php,然后要有修改文件的权限进入插入模式;
保存:Esc到命令模式 敲冒号: 再wq!(3个字符),就保存退出了, [w是保存,q是退出,可单用,!是强制]

也可以是Shift+ZZ,保存退出的意思

==============================================

1.关于退出

:wq!  ----强制保存退出
:wq  ---- 保存退出
:x   ----- 作用和:wq 一样
ZZ  ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式)
:q  ---- 退出
:q!  ---  强制退出

==============================================

2.关于移动

h : 在当前行向左移动一个字符
j:  移动到下一行
k:  移动到上一行
l:  在当前行向右移动一个字符
Ctrl +f:  向前滚动一页
Ctrl +b:  向后滚动一页
:n   将光标定位到第n行
:$   将光标定位到最后一行
0   将光标定位到本行的行首
$   将光标定位到本行的行尾
G   将光标定位到本文章的最后一行,与:   $功能相同。
H   将光标定位到屏幕的顶端
M   将光标定位到屏幕的中间
L   将光标定位到屏幕的底端

============================================

3.关于搜索

/:   后面跟要查找的东西,在文件中向前搜索  如:/hell  、  /hell* 等
?:  后面跟要查找的东西,在文件中向后搜索
n:  向前重复搜索
N:  向后重复搜索

用\c忽略大小写
/word_to_search\c

忽略大小写
:set ignorecase  或者:set ic

考虑大小写
:set noignorecase 或者:set noic

=============================================

4.关于复制

yy:  复制光标当前行
nyy:  复制光标当前行到当前行以下的n-1行
:1,100 co 200   将1~100的内容复制到第200行。
:100,102 co $   将100~102行的内容复制到最后一行。

==============================================

5.关于粘贴

p :   粘贴到当前行的下一行
P(大) :   粘贴到当前行的 上一行

==============================================

6.关于删除.剪切

dd   删除当前行
ndd   与nyy相似
dw   删除一个单词
ndw   与ndd相似
x    删除一个字符
nx   删除n个字符
dG  删除当前光标到文件末尾的所有内容
d0  删除当前光标到本行行首的所有内容
d$  删除当前光标到本行行尾的所有内容
:1,100d  删除1~100
:100d    删除第100行
:1,100 mo $   将1~100行的内容移动到最后一行。

=============================================

7.关于插入

i:  在当前位置的字符前面进入插入模式
I:  在当前行的开头进行插入
a:  在当前位置的字符后面进入插入模式
A:  在当前行的结尾进行插入
o:  在当前行下面打开一个新行进行插入
O:  在当前行上面打开一个新行进行插入

=============================================

8.关于撤销

u:  撤销上一次的更改
ctrl+r: 还原上次撤销

=============================================

9.关于替换

regexp:  是要匹配的式样
replacement:  是要替换的字符串

:s/regexp/replacement   -------------------------替换当前行出现的第一个式样
:s/regexp/replacement/g  -------------------------替换当前行所有的匹配
:%s/regexp/replacement/g  -----------------------替换文件中所有匹配式样

=============================================

PS:  还有一个重要的命令就是"." 命令,这个命令是用来重复上一命令的

vi里如何:撤销上次操作?,多次重复一组编辑操作?.......

a)   撤消上一个编辑操作。       ====>   u
b)   重复上一个编辑操作。       ====>   .
c)   还原被撤消的编辑操作。    ====>   Ctrl   +   r
d)   多次重复一组编辑操作。    ====>  ". " 命令可以重复最近一次的编辑动作.

==============================================

其它:

vi filename:用vi打开文件
vi 打开文件时,光标会自动定位到上一次打开的位置

vi + filename
打开文件时,光标会自动定位最后一行(一般情况,如要更改的信息在最后几行时)

vi +n filename
打开文件时,光标会自动定位到指定行

vi +/string filename  
打开文件时,将光标定位到匹配的字符串所在行上

vi filename filename
同时打开多个文件
切换下一个文件,输入:n
切换上一个文件,输入:prev

命令模式下输入“:set nu”
:set nu :显示行号
:set nonu:取消行号

vi/vim永久显示行号:

打开vimrc文件 vi /etc/vim/vimrc 编辑,在里面找一行,添加上set number,:wq保存退出 重新执行vim即可

yy:复制一行
p:粘贴
dd:删除
u:取消上一次操作

:x:功能和:wq是一样的 保存并退出

/str :查找匹配内容  n表示向后找、N表示向前找
:n 定位到指定行
!:强制  :q!强制退出   :w! 强制保存

\ 可以使命令换行

Ctrl+U 删除单签光标之前的所有字符
Ctrl+K 删除光标后所有字符
Ctrl+L 清空当前屏幕中显示内容
Ctrl+C 取消当前命令行的编辑

获得命令帮助

内部命令
Help 用来查看shell内部命令的帮助信息,比如 Help pwd

外部命令
--help  比如mkdir --help 查看mkdir帮助
使用man手册  比如man passwd 看passwd帮助

| 为管道 前面的输出结果作为后面命令的操作对象,比如  ifconfig | grep ‘eth0’,只显示有eth0的行
> 重定向输出 ifconfig >ifconfig.txt将输出到记事本文件

Vim中的swp文件:

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。以下两种情况不会删除swp文件:

1、Vim非正常退出,这种情况下,除非手动删除swp文件(也可以在vim提示时删除),否则它会一直存在。

2、多个程序同时编辑一个文件。

可用vim带-r参数编辑 #vim -r data 然后w保存即可,其中-r代表recovery 最后记得删除.swp文件:

#rm -rf .*swp

补充:
 
可以通过选项禁止产生swp文件
 
#set noswapfile

标签: vi vim 操作笔记
共有 人打赏支持
粉丝 143
博文 372
码字总数 288918
×
Junn
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: