Vim的三种模式
vim有三种基本的工作模式,分别为:命令模式、末行模式、编辑模式。
命令模式
使用vim打开文件之后,首先进入命令模式,它是vim编辑器的入口模式。在命令模式下,不能对文件直接进行编辑,但可以通过命令对文件进行常规的编辑操作,例如:复制、粘贴、删除、定位、翻页等等。
末行模式
末行模式是vim编辑器的出口,要退出vim,必须要在末行模式下。在末行模式下,执行退出文件、保存并退出文件等操作。
编辑模式
正常的编辑文字模式。
三种模式的切换操作
(1)vim打开一个文件默认进入的就是命令模式,另外两种模式需要回到命令模式才能进入彼此。
(2)在命令模式中按下i
,I
,o
,O
,a
,A
,r
,R
任何一个字母后进入编辑模式,进入编辑模式后,下方会出现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 + b
或 PgUp
(b 为 backward 的缩写)
向下翻屏:按键 Ctrl + f
或 PgDn
(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
(删除之后下一行上移)
撤销/恢复 {#che_xiaohui_fu}
撤销:按键: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
编辑模式 {#bian_ji_mo_shi1}
在命令模式下,按键i
,I
,o
,O
,a
,A
,r
,R
任何一个字母后进入编辑模式;
Esc
:退出编辑模式,回到命令模式
i
:切换到插入模式,并在当前光标位置之前 开始插入(插入)
a
:切换到插入模式,并在当前光标位置之后 开始插入(附加)
I
:将光标移至当前的开头位置,并切换到插入模式
A
:将光标移至当前的结尾位置,并切换到插入模式
r
:切换到替换模式。处于替换模式时,不会插入文本,输入的字符将替换掉当前光标下的字符,输入结束后自动切换回命令模式
R
:切换至替换模式。处于替换模式时,不会插入文本,所输入的每个字符均将替换掉当前文档中的字符。直到手动按Esc切换到命令模式
o
:在当前行的下方新打开一个行,并切换至插入模式
O
:在当前行的上方新打开一个行,并切换至插入模式
Ctrl-h
:删除光标左侧的字符
Ctrl-w
:删除光标左侧的单词
Ctrl-u
:删除光标左侧的所有字符