新手小白面对Vim束手无策,急需一篇Vim命令的新手指南,无意中发现了一篇有趣且循序渐进的vim操作指南,特将其总结至此。(随使用进度更新)
原文链接:https://coolshell.cn/articles/5426.html 作者:陈皓
一、基本操作
模式:Vim分Normal模式和Insert模式,使用Vim打开文件默认是Normal模式;在Insert模式下允许编辑。
指令:
i :进入Insert模式;
Esc :退出Insert模式;
x :删除当前光标所在的一个字符;
:w+(文件名) :保存文件;
:q :退出当前文件,可与:w连用;
dd :删除当前行,并且将删除内容保存在粘贴板
p :粘贴剪贴板内容
光标移动:
hjkl :左下上右;也可以使用上下左右键;
帮助:
help (+ command) :(某指令的)帮助信息。
二、功能指令
在一般的编辑器下,当你需要copy一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl+C。也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。
1)插入模式
a :在光标后插入,即进入插入模式;
o :在当前行后插入新行;
O :在当前行前插入新行;
cw :从当前光标位置到当前单词结尾进行剪切;
2)光标移动
0 :光标移动到行头;
^ :移动到本行第一个非空白字符位置;
注:C语言中空白符指:空格、换行、回车、制表
$ ;到本行行尾;
g_ :到本行最后一个非空白字符的位置;
:/word :搜索全文中word字符,并跳转到该行,若有多个匹配结果,“n”键可匹配下一个结果;
3)复制粘贴
p :粘贴;
yy :复制当前行至粘贴板;
4)撤销恢复
u :撤销;
Ctrl+r :恢复
5)保存
:e+(Path/File) :打开(Path/File) 路径的文件;
:w :保存文件;
:saveas+(Path/File) :另存为;
ZZ、:wq、:x :保存并退出;
:q! :退出并不保存;
:bn :同时打开多个文件时,切换到下一个文件;
:bp :同时打开多个文件时,切换到上一个文件;
三、批量指令操作
即重复执行同一个命令,有两种方式:
1、N(command) :重复执行command N次;
例如:2dd :执行两次删除整行;
2、. :重复执行上一条命令;
四、光标跳转
1、NG :移动到第N行,等价于“:N”;
2、gg :移动到第一行;
3、G :移动到最后一行;
4、按单词移动:
1)w :到下一个单词的开头;(默认一个单词由字母,数字和下划线组成)
e :到下一个单词的结尾;(默认一个单词由字母,数字和下划线组成)
2)W :到下一个单词的开头;(认为单词以空白符分隔)
E :到下一个单词的结尾;(认为单词以空白符分隔)
5、% :当光标位于(、[、{时,移动到匹配的对应括号
6、* :匹配光标当前所在的单词,移动光标到下一个
7、# :匹配光标当前所在的单词,移动光标到上一个
四、命令的组合
许多命令都可以和移动光标的命令连动。命令组合的形式:
例如: “:0y$”意味着:
0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
五、字符串替换
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,
s
/
v
i
v
i
a
n
/
s
k
y
/
替
换
第
n
行
开
始
到
最
后
一
行
中
每
一
行
的
第
一
个
v
i
v
i
a
n
为
s
k
y
:
n
,
s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,
s/vivian/sky/替换第n行开始到最后一行中每一行的第一个vivian为sky :n,s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/