Vim的基础使用
本文最后更新于:3 年前
Vim的几种模式
- normal模式
默认模式,此模式下你可以输入命令,如利用/ + 单词
来进行搜索,又或者利用yp进行cv操作; - 编辑模式
通过输入i(insert)/a(append)/o(open a line)进入编辑模式,可以进行文本的编辑操作; - 命令模式
就是在normal模式下输命令,比如分屏::vs
竖分屏;:sp
横分屏 - 可视化模式
所谓的可视化模式用于选择文本,在normal模式下使用v
可以进入visual模式,可选择的最小单位是每一个字符;使用V
可以进入visual line模式,顾名思义,可选择的最小单位是每一行;使用ctrl + v
可以进入visual block模式,可以以矩阵的方式进行文本选择。
编辑模式下的小技巧
ctrl + h
删除上一个编辑的字符ctrl + w
删除上一个编辑的单词ctrl + u
删除当前行
上述的快捷键也可以用于终端;ctrl + [
insert模式切换到normal模式gi
快速跳转到最后一次编辑的地方并进入插入模式
Vim移动
hjkl
即是vim normal模式下的左下上右键;- w/W移到下一个单词开头
- e/E移到下一个单词结尾
- b/B移到上一个单词开头 back word
上面移动的小写和大写的区别在于:
小写指的是以非空白符分割的单词;
大写指的是以空白符分割的单词;
f + <char>
可以移动到行内第一个符合的字符上,若不符合,可以通过;
或,
进行搜索下一个或上一个;大写的F则表示反向搜索,而非正向搜索;
上面的f可以理解为find,使用f + <char>
可以到达寻找的字符;
而若是用t + <char>
则可以寻找到要找的字符前一位,此处的t可以理解为to;
0
可以移动到当前行的行首;$
可以移动到当前行的行尾;^
可以移动到当前行的首个非空字符;g_
可以移动到当前行的最后一个非空字符;gg/G
移动到文件开头或结尾;H/M/L
可以跳转到屏幕的开头(Head)/中间(Middle)/结尾(Lower);ctrl + f/ctrl + u
向下分页(forward)/向上分页(upward)zz
把屏幕设置为中间
Vim增删改查
增
- i(insert): 在字符前插入
- a(append): 在字符后插入
- o(open a new line): 下启一行插入
- I: 在行首插入
- A: 在行末插入
- O: 上启一行插入
删
- x: 删除单个字符
- d(delete): 此为删除命令,可结合文本对象具体使用,如diw(delete inner word)
d和x可以搭配数字使用,以达到同一命令重复执行多次的效果。
改
- r(replace):
r <char>
用以替换当前光标所在处的字符; - c(change): 可以搭配文本对象具体使用,如
"just try try"
中使用ci"
则会删除掉引号内的内容(引号不会去掉,若是ca"
则会),并且进入到编辑模式 - s(substitute): 删除并进入编辑模式
s
可以搭配数字使用;
上述的三个命令若是大写(即R/C/S)会有不同的作用:
- R进入replace模式,从当前字符起可以一直替换,直到退出该模式;
- C/S二者差不多,删掉整行进入编辑模式;
查
/ + <word>
: 前向搜索? + <word>
: 反向搜索n/N
: 跳到下一匹配项/跳到上一匹配项*/#
: 当前光标处单词的下一项/上一项匹配
Vim搜索替换
格式: :[range]s[ubstitute]/{pattern}/{string}/[flags]
range表示范围(不写则默认当前行):
%
表示全选;m,n
表示第m-第n行;n,$
表示第n行到末尾;
s表示替换
pattern表示替换前的单词,可以用正则
string表示替换后的单词
flags表示替换方式(不写则默认替换第一个(当前行/范围内的行)出现的pattern):
- g(global): 全局执行(即所有出现的,不局限在第一个)
- n(number): 报告匹配的次数而不替换
个人小结
对于可以结合文本对象进行操作的命令:如y(yank)/d(delete)/c(change)等,可以结合以下的范围词来使用:a(around,含该字符)/f(find,含该字符)/i(inner,不含该字符)/t(to,不含该字符)来结合特定的字符使用。
如:yf;
表示由当前字符开始复制至;
处,且含;
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!