vim的三种模式
一般模式
以vim打开一个文件就直接进入一般模式了。在这个模式中,你可以使用h,j,k,l按键移动光标,也可以使用删除字符或删除整行来处理文件内容,也可以使用复制粘贴处理文件内容。
编辑模式
在一般模式中按下A,a,I,i,O,o,R,r任何一个按键,就可以进入编辑模式,在界面左下方会出现INSERT或REPLACE字样,此时可以对文本进行编辑。
如果要回到一般模式,需要按下ESC键。
命令模式
在一般模式中输入;,/,?任何一个符号,就可以将光标移到最下边一行。可以实现查找数据、读取、保存、批量替换字符、推出vi、显示行号等操作。
注:一般模式可分别与编辑模式和命令模式进行切换,但编辑模式和命令模式之间无法相互切换。
按键说明
一般模式可用的按键说明,光标移动,复制粘贴,查找替换等
| 移动光标的方法 |
| h |
光标向左移动一个字符 |
| j |
光标向下移动一个字符 |
| k |
光标向上移动一个字符 |
| l |
光标向右移动一个字符 |
| ctrl+f |
屏幕向下移动一页,相当于Page Down按键 |
| ctrl+b |
屏幕向上移动一页,相当于Page Up按键 |
| ctrl+d |
屏幕向下移动半页 |
| ctrl+u |
屏幕向上移动半页 |
| + |
光标移动到非空格符的下一行 |
| - |
光标移动到非空格符的上一行 |
| n+space |
按下数字后再按空格键,光标会向右移动n个字符 |
| 0 |
数字0,光标移动到本行第一个字符处 |
| $ |
光标移动到本行最后一个字符处 |
| H |
光标移动到屏幕显示的最上方一行第一个字符处 |
| M |
光标移动到屏幕显示的中间一行第一个字符处 |
| L |
光标移动到屏幕显示的最下方一行第一个字符处 |
| G |
光标移动到文件的最后一行 |
| nG |
n为数字,光标移动到文件的第n行 |
| gg |
光标移动到文件的第一行,相当于1G |
| n+enter |
光标向下移动n行 |
| 查找与替换 |
| /word |
向光标之后的内容查找名为word的字符串 |
| ?word |
向光标之前的内容查找名为word的字符串 |
| n |
n为字母,重复前一个查找的操作 |
| N |
与n相反,反向进行前一个查找的操作 |
| :n1,n2s/word1/word2/g |
n1、n2为行编号,在n1行和n2行之间寻找名为word1的字符串,并将该字符串替换为word2 |
| :1,$s/word1/word2/g |
在第1行和最后1行之间寻找名为word1的字符串,并将该字符串替换为word2 |
| :1,$s/word1/word2/gc |
在第1行和最后1行之间寻找名为word1的字符串,并将该字符串替换为word2,并在每次替换之前显示提示字符,等待用户确认 |
| 删除、复制与粘贴 |
| x与X |
在一行当中,x为向后删除一个字符(相当于del按键),X为向前删除一个字符(相当于backspace按键) |
| nx |
n为数字,连续向后删除n个字符 |
| dd |
删除(剪切)光标所在的一整行 |
| ndd |
n为数字,删除(剪切)光标所在的行至向下第n行的字符 |
| d1G |
删除(剪切)光标所在行至第1行的所有字符 |
| dG |
删除(剪切)光标所在行至最后1行的所有字符 |
| d$ |
删除(剪切)光标所在处到该行最后一个字符 |
| d0 |
删除(剪切)光标所在处到该行第一个字符 |
| yy |
复制光标所在行的所有字符 |
| nyy |
n为数字,复制光标所在的行至向下第n行的字符 |
| y1G |
复制光标所在行至第1行的所有字符 |
| yG |
复制光标所在行至最后一行的所有字符 |
| y0 |
复制光标所在处至该行第一个字符 |
| y$ |
复制光标所在处至该行最后一个字符 |
| p与P |
p为把已复制的字符粘贴在光标下一行,P则为粘贴在光标上一行 |
| c |
删除字符并进入编辑模式 |
| u |
撤销前一个操作 |
| ctrl+r |
反向撤销前一个操作 |
| . |
重复前一个操作,如果想重复删除,重复粘贴,可以使用此英文句号 |
一般模式切换到编辑模式可用的按键说明
| 进入插入或替换的编辑模式 |
| i与I |
i为从目前光标所在处插入,I为从光标所在行的第一个非空格符处开始插入 |
| a与A |
a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入 |
| o与O |
o为从目前光标所在的下一行插入新的一行,O为从目前光标所在的上一行插入新的一行 |
| r与R |
r与R可以进入替换模式。r只会替换光标所在处一个字符,R会一直替换后续字符,直到按下Esc键为止 |
| Esc |
退出编辑模式,回到一般模式中 |
一般模式切换到命令模式可用的按键说明
| 命令模式的保存、退出等命令 |
| :w |
将编辑的数据写入硬盘文件中 |
| :w! |
若文件属性为只读时,强制写入该文件。不过到底能不能写入,还是跟用户对该文件的权限有关 |
| :q |
退出vim |
| :q! |
强制退出vim不保存修改 |
| :wq |
保存文件并退出 |
| ZZ |
若文件没有修改,则不保存退出;若文件已经被修改,则保存并退出 |
| :w [filename] |
将正在编辑的文件保存成另一个文件,类似另存为 |
| :r [filename] |
读入另外一个文件的数据,亦即将[filename]这个文件的内容追加到光标所在行的后边 |
| :n1,n2 w [filename] |
n1、n2为行编号,将n1到n2的内容保存为filename这个文件 |
| :! command |
暂时退出vim到命令行模式下执行command的显示结果 |
| :set nu |
显示行号 |
| :set nonu |
取消显示行号 |