一般模式
移动光标的方法 | |
向下移动30行,可以使用“30+向下箭头”,即加上想要进行的次数后,按下操作即可 | |
ctrl+f | 屏幕向下移动一页,相当于Page Down按键 |
ctrl+b | 屏幕向上移动一页,相当于Page Up按键 |
0或功能键Home | 这是数字0,移动到这一行的最前面的字符处 |
$或功能键End | 移动到这一行的最后面字符处 |
G | 移动到这个文件的最后一行 |
nG | n为数字,移动到这个文件的第n行,例如20G移动到第20行 |
gg | 移动到这个文件的第一行,相当于1G |
N[Enter] | n为数字,光标向下移动n行 |
查找替换 | |
/word | 向下寻找一个名称为word的字符串,例如要在文件内查找card这个字符串,就输入/card即可 |
?word | 向上寻找一个字符串名称为word的字符串 |
n | 这个是英文按键,代表重复前一个查找的操作,举例来说,如果刚才执行/card去向下查找card这个字符串,则按下n后,会向下继续查找下一个名称为card的字符串,如果是执行?card的话,那么按下n则会向上继续查找名称为card的字符串 |
N | 这个N是英文按键,与n刚好相反,为“反向”进行前一个查找操作。例如输入/card后,按下N则表示向上查找/card |
使用/word配置n及N是非常有帮助的,可以让你重复地找到一些关键字 | |
:n1,n2s/word1/word2/g | n1和n2为数字,在第n1和n2行之间寻找word1这个字符串,并将该字符串替换为word2.举例来说,在100到200行之间查找card并替换为CARD则用:100,200s/card/CARD/g |
:1,$s/word1/word2/g | 从第一行到最后一行查找word1字符串,并将该字符串替换为word2 |
:1,$s/word1/word2/gc | 从第一行到最后一行查找word1字符串,并将该字符串替换为word2.且在替换前显示提示字符给用户确认是(confirm)否需要替换 |
删除、复制、黏贴 | |
x,X | 在一行字当中,x为向后删除一个字符(相当于DEL按键),X为向前删除一个字符(相当于Backspace) |
nx | n为数字,连续向后删除n个字符。 |
dd | 删除光标所在的那一整行 |
ndd | n为数字,删除光标所在的向下n行,例如20dd则是删除20行 |
yy | 复制光标所在的那一行 |
nyy | n为数字,复制光标所在的向下n行,例如20yy,复制20行 |
y1G | 复制光标所在行到最后一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y0 | 复制光标所在那个字符到行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p,P | p为将已复制的数据在光标下一行黏贴,P为黏贴在光标的上一行,举例来说,我目前光标在第20行,且已经复制了10行数据,则按下p后,那10行数据会黏贴在原来的20行之后,也即由21行开始黏贴。但如果是按下P键呢?那么原来的第20行会被变成30行 |
u | 复原前一个操作 |
ctrl+r | 重做上一个操作 |
. | 不要怀疑,这个就是小数点,意思是重复前一个操作的意思,如果你想要重复删除,重复黏贴等操作,按下小数点就好了 |
第二部分,一般模式切换到编辑模式的可用按钮说明
i,I | 进入插入模式,i从目前光标所在插入,I为目前所在和那个的第一个非空字符出开始插入 |
a,A | 进入插入模式,a为从目前光标所在的下一个字符开始插入,A从光标所在行的最后一个字符处开始插入 |
o,O | 进入插入模式,这是英文字符o的大小写,o为在目前光标所在的下一行处插入新的一行,O为在目前光标所在处的上一行插入新的一行 |
r,R | 进入替换模式,r只会替换光标所在的那一个字符一次,R会一直替换光标所在的文字,直到按下Esc键为止 |
上面这些按键,在vi界面的左下角处会出现“--INSERT--”键,或“--REPLACE--”的字样 |
第三部分,一般模式切换到命令行模式的可用按钮说明
:w | 将编辑的数据写入硬盘文件 |
:w! | 若文件属性为“只读”时,强制写入该文件,不过到底能不能写入,还是跟你对该文件的权限有关 |
:q | 离开vi |
感叹号!在vi当中经常具有强制的意思 | |
:wq | 保存后离开,若为“wq!”则为强制保存后离开 |
ZZ | 这是大写的Z,若文件没有更动,则不保存离开,若文件已经被更动过,则保存后离开 |
:w[filename] | 将编辑的数据保存成另一个文件 |
:r[filename] | 在编辑的数据中,读入另一个文件的数据,即将filename这个文件的内容加到光标所在行后面 |
:set nu | 显示行号,设置之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与set nu相反,为取消行号 |