题记:
VI和VIM有非常多的命令,在此分部分展示一下
第一部分
(一)移动光标类
一般模式:光标移动、复制粘贴、查找替换
上下移动:
h/<- 光标向左移动一个字符
j/向上箭头 光标向上移动一个字符
k/向下箭头 光标向下移动一个字符
l/向右箭头 光标向右移动一个字符
ps:30J 或者30 向上箭头,表示向上移动30行。
翻页:
CTRL + F 屏幕向下移动一页,相当于Page Down按键
CTRL + B 向上移动一页,相当于PageUp按键
CTRL + d 向下移动半页
CTRL + u 向上移动半页
加号(+) 移动光标到非空格字符的下一行
减号(-) 移动光标到非空格字符的上一行
n<空格> n表示数字,例如按下20,再按空格。光标会右移到这一行的第20个字符。
0或者功能键home 数字“0”,移动到这一行的最前面的字符(常用)
$或者功能键end 移动到这一行的最后面的字符(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符。
M 光标移动到这个屏幕的中央那一行的第一个字符。
L 光标移动到这个屏幕的最下方那一行的第一个字符。
G 光标移动到这个文件的最后的一行(常用)
nG n为数字。移动到这个文件的第n行。例如20G,会移动到这个文件的第二十行。
gg 移动到这个文件的第一行,相当于1G(常用)。
N(Enter) n为数字。光标向下移动n行(常用)。
(二)查找与替换
/word 向下查找一个名称为word的字符。如要查找vbird这个字符串,就输入/vbird。(常用)
?/word 向上查找一个名称为word的字符。(常用)
n 这个小写的英文字母n的英文按键。代表重复前一个查找的操作。如,执行过/vbird向下查找vbird这个字符串,按下n后,会向下继续查找下一个名称为vbird的字符。
N 这个大写的N英文按键,与n相反,为“反向”进行前一个查找的操作。例如执行了/word向下查后,按下N则表示向上查找word。
:n1,n2s/word1/word2/g n1与n2行之间寻找word1这个字符串,找到后将该字符串替换为word2。
如在100到200行之间查找vbird并将它替换成VBIRD。使用:100,200s/vbird/VBIRD/g。(常用)
:1,$s/word1/word2/g 从第一行到最后一行查找word1字符串,并将该字符串替换为word2。(常用)
:1,$s/word1/word2/gc 从第一行到最后一行查找word1字符串,并将该字符串替换为word2。且在替换前显示提示字符串给用户确认是否需要替换。
(三)删除、复制与粘贴
x,X 在一行字当中,x为向后删除一个字符(相当于DEL按键),X为向前删除一个字符(相当于Backspace)(常用)。
nx n为数字,连续向后删除n个字符。举例来说,我要连续删除10个字符,即“10x”。
dd 删除光标所在的那一整行(常用)。
ndd n为数字。删除光标所在的向下n行,例如20dd则是删除20行。(常用)
d1G 删除光标所在到第一行的所有数据。
dG 删除从光标所在到最后一行的所有数据。
d$ 删除从光标所在处到该行的最后一个字符。
d0 那个字符是0,删除从光标所在处到该行的最前面的一个字符。
yy 复制光标所在的那一行。(常用)
nyy n为数字。复制光标所在的向下n行,例如20yy则是复制20行。(常用)
y1G 复制光标所在行到第一行的所有数据。
yG 复制光标所在行到最后一行的所有数据。
y0 0为数字0,复制光标所在的那个字符到该行行首的所有数据。
y$ 复制光标所在的那个字符到该行行尾的所有数据。
p,P p为将已经复制的数据,在光标的下一行粘贴,P则为粘贴在光标的上一行。
(四) 移动光标的方法
J 将光标所在的行与下一行的数据结合成同一行。
c 重复删除多个数据,例如向下删除10行,10cj
u 复原前一个操作。(常用)。
ctrl + r 重复上一个操作。(常用)。
. 这就是小数点,重复前一个操作。
第二部分
一般模式切换到编辑模式的可用的按钮的说明。
i,I 进入插入模式。i为从目前光标所在处插入,I(大写)为目前所在行的第一个非空空格符处开始插入。
a,A 进入插入模式。a为从目前光标所在的下一个字符处开始插入,A为从光标所在的行的最后的一个字符处开始插入。
o,O 进入插入模式。这是英文字母o的大写。o为目前光标所在的下一行处插入新的一行;O为在目前光标所在处的上一行插入新的一行。(常用)
r,R 进入替换模式。r只会替换光标所在的那一个字符一次;R会一直替换光标所在的文字,直到按下ESC键为止。(常用)
ESC 退出编辑模式,进入一般模式。
第三部分
一般模式切换到命令行模式的可用的按钮说明
:W 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为“只读”,强制写入该文件。
:q 离开vi
:q! 若曾经修改过文件,又不想存储,使用“!”为强制离开不保存的文件。
:wq 保存后离开,wq!强制保存后离开。
ZZ 这是大写的Z。如果文件没有变动,则不保存离开,如果文件已经被更改过,则保存后离开。
:w[filename] 将编辑的数据保存为另外一个文件(类似于另存文件)。
:r[filename] 在编辑的数据中,读入另外一个文件的数据,即将“filename”这个文件内容加到光标所在行的后面。
:!命令 暂时离开vi到命令行模式下执行command的显示结果。例如,“:!ls /home”即可在vi当中查看/home下面以ls输出的文件的信息。
:set nu 显示行号,设置之后,会在每一行的前缀显示该行的行号。
:set nonu 与set nu相反,为取消行号。