Vim常用命令

Vim的三种模式

vim有三种基本的工作模式,分别为:命令模式、末行模式、编辑模式。

命令模式

使用vim打开文件之后,首先进入命令模式,它是vim编辑器的入口模式。在命令模式下,不能对文件直接进行编辑,但可以通过命令对文件进行常规的编辑操作,例如:复制、粘贴、删除、定位、翻页等等。

末行模式

末行模式是vim编辑器的出口,要退出vim,必须要在末行模式下。在末行模式下,执行退出文件、保存并退出文件等操作。

编辑模式

正常的编辑文字模式。

三种模式的切换操作

(1)vim打开一个文件默认进入的就是命令模式,另外两种模式需要回到命令模式才能进入彼此。
(2)在命令模式中按下iIoOaArR任何一个字母后进入编辑模式,进入编辑模式后,下方会出现INSERT或者REPLACE字样,按Esc键退出编辑模式,回到命令模式。
(3)在命令模式中按下:/?中任意一个即可进入末行模式,末行模式可以对文档或者vim环境进行操作,例如查找、读取、存盘、替换、离开、显示行号等。

三种模式的切换示意图

命令模式

光标移动

(1) 基本命令
在命令模式下,通过h,j,k,l 键来实现上下左右的移动。
h:将光标向左移动一个字符。
j:将光标向下移动一行。
k:将光标向上移动一行。
l:将光标向右移动一个字符。

(2) 光标移到下一个单词的开头
按键:w
(3) 光标移到当前单词的末尾
按键:e
(4) 光标移到行首
按键:0
(5) 光标移到行首的第一个字符
按键:^shift + 6(不是数字键盘的6)
(6) 光标移到行尾
按键:$shift + 4(不是数字键盘的4)
(7) 光标移动到文件首行
按键:gg
(8) 光标移动到文件末行
按键:G
(9) 翻屏
翻整页:
向上翻屏:按键 Ctrl + bPgUp (b 为 backward 的缩写)
向下翻屏:按键 Ctrl + fPgDn (f 为 forward 的缩写)
翻半页:
向上翻屏:按键Ctrl + u (u 为 up 的缩写)
向上翻屏:按键Ctrl + d (d 为 down 的缩写)
(10) 在曾经浏览过的位置之间来回移动
移动到上次光标位置
按键:Ctrl + o
移动到下次光标位置
按键:Ctrl + i
(11) 光标的快速移动
快速将光标移动到指定的行
按键:数字 G
以当前光标为准向上/向下移动n行
按键:数字n k,数字n j
例如向下移动10行:10 j
以当前光标为准向左或右移动n个字符
按键:数字n h,数字n l
例如向左移动2个字符:2 h
末行模式下的快速移动方式:移动到指定的行
按键::数字 + 回车
例如跳转到当前文件的第100行::100<回车>

复制操作

(1) 复制光标所在行
按键:yy (y 为 yank 的缩写)
粘贴:在想要粘贴的地方按下p键 (p 为 paste 的缩写)
(2) 以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字 yy
(3) 可视化复制
按键:v,然后按hjkl方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴。

剪切/删除

(1) 删除光标所在的字符
按键:x
(2) 删除光标之后的所有字符直到出现下一个单词
按键:dw (d为delete的缩写,w 为 world 的缩写)
(3) 删除光标之后的所有字符直到当前单词结束
按键:de
(4) 删除光标之后的所有字符直到该行末尾
按键:d$
(5) 剪切/删除光标所在行
按键:dd (删除之后下一行上移)
注意:dd严格意义上说是剪切命令,但如果剪切之后不粘贴即为删除。
(6) 剪切/删除光标所在行(包含当前行),向下删除/剪切指定的行数
按键:数字 dd (删除之后下一行上移)

撤销/恢复

撤销:按键:u (u 为 undo 的缩写)
恢复:按键:Ctrl + r 恢复(取消)之前的撤销操作

末行模式

进入方式:由命令模式进入,按下“:”或“/(表示查找)”即可进入
退出方式:
(1) 按下Esc
(2) 删除末行全部输入字符

保存

输入::w 保存文件 (w 为 write 的缩写)

退出

输入::q 退出 (q 为 quit 的缩写)

保存并退出

输入::wq

强制退出(!)

输入::q! 表示强制退出,即不保存修改操作

搜索/查找

输入:/关键词
在搜索结果中查找下一个结果:n
在搜索结果中查找上一个结果:N

替换

替换光标所在行第一处符合条件的内容
输入::s/搜索的关键词/新的内容
替换光标所在行全部符合条件的内容
输入::s/搜索的关键词/新的内容/g
替换整个文档中每行第一处符合条件的内容
输入::%s/搜索的关键词/新的内容
替换整个文档中全部符合条件的内容
输入::%s/搜索的关键词/新的内容/g
提示:%表示整个文件,g表示全局(global)

显示行号

输入::set nu(nu 为 number 的缩写)
隐藏行号,则输入::set nonu

编辑模式

在命令模式下,按键iIoOaArR任何一个字母后进入编辑模式;
Esc:退出编辑模式,回到命令模式
i:切换到插入模式,并在当前光标位置之开始插入(插入)
a:切换到插入模式,并在当前光标位置之开始插入(附加)
I:将光标移至当前的开头位置,并切换到插入模式
A:将光标移至当前的结尾位置,并切换到插入模式
r:切换到替换模式。处于替换模式时,不会插入文本,输入的字符将替换掉当前光标下的字符,输入结束后自动切换回命令模式
R:切换至替换模式。处于替换模式时,不会插入文本,所输入的每个字符均将替换掉当前文档中的字符。直到手动按Esc切换到命令模式
o:在当前行的下方新打开一个行,并切换至插入模式
O:在当前行的上方新打开一个行,并切换至插入模式
Ctrl-h:删除光标左侧的字符
Ctrl-w:删除光标左侧的单词
Ctrl-u:删除光标左侧的所有字符

发表评论

邮箱地址不会被公开。 必填项已用*标注