前言
我平时用vim不多,用到的时候大部分是在git commit。
但是前前后后用了这么久,还是大致记住了一些命令,都是使用频率比较高的(使用频率低的自然也没记住)。这里总结一下。
首先是vim最迷惑人的退出了。(注意’:‘也是命令的一部分,’:'表示进入命令模式。)
退出 :q
保存 :w
保存并退出 :wq
保存并退出 ZZ
1.光标跳转
翻页
向下全屏翻页 ctrl+f
向上全屏翻页 ctrl+f
向下半屏翻页 ctrl+d
向上半屏翻页 ctrl+u
光标移动
上 j 下 k 左 h 右 l
全文跳转
跳转到全文第一行 gg
跳转到全文最后一行 G
跳转到全文第n行 nG ;例如,想跳转到全文的第9行,则依次按下 9, shift+G
行内跳转
跳到行首 ^ 或数字 0
跳到行尾 $
跳到行首并进入插入模式 I
跳到行尾并进入插入模式 A
跳转到其他行
跳到下一行行尾 2$
跳到下n行行尾 (n+1)
,
比
如
想
跳
转
到
当
前
行
之
后
的
第
1
行
,
命
令
为
2
, 比如想跳转到当前行之后的第1行,命令为2
,比如想跳转到当前行之后的第1行,命令为2;跳转到当前行之后的第5行,命令为6$。以此类推。
按单词跳转
跳转到下一个单词 w(单词以空格、标点符号分界)或者 W(单词只以空格分界)
跳转到上一个单词 b (单词以空格、标点符号分界)或者 B(单词只以空格分界)
2.修改内容
插入
在光标当前位置进入插入模式 i
在当前行行首进入插入模式 I
在光标当前位置的右侧字母后进入插入模式 a
在当前行行尾进入插入模式 A
删除(上一条删除的内容其实进入了剪贴板,可以用p或P粘贴到指定位置)
删除光标后一个字母 x
删除光标前一个字母 X
删除当前行 dd
删除光标所在单词中,光标右侧的字符 dw
删除光标所在行中,光标右侧的字符 d$
删除光标所在行开始的后续多行 d待删除的行数d ;比如要一次删除连续的5行,则命令为d5d
删除光标所在行开始的后续全部行 dG
删除光标所在行及其之前的全部行 dgg
复制到剪贴板
复制当前行 yy
复制当前行在内的后续n行 yny,比如复制当前行及其之后的5行,则命令为y5y
复制指定行号范围 :起始行号,结束行号,y 比如复制全文的第4~第8行,则命令为 :4,8y
从剪贴板粘贴到当前位置
将剪贴板内容粘贴到光标当前位置之后 p
将剪贴板内容粘贴到光标当前位置之前 P
3.搜索查找
向光标前搜索特定字符,比如想搜索在光标之后出现的’hello’这个单词,就输入命令 /hello 然后回车
向光标后搜索特定字符,比如想搜索在光标之前出现的’hello’这个单词,就输入命令 ?hello 然后回车
说明:
- 搜索支持正则表达式。例如/vim$匹配行尾的"vim"。
- 搜索特殊字符需要转义,例如/vim$匹配"vim$"
- 在搜索命令中加入\c表示大小写不敏感,\C表示大小写敏感
搜索光标所在单词 * (要求单词每次出现的前后为空白字符或标点符号)
搜索光标所在单词 g* (单词每次出现前后字符无要求,即该单词可以作为其他单词中的一部分。例如"hat"之于"what")
跳转到下一个匹配搜索的位置 n
跳转到上一个匹配搜索的位置 N
4.替换
?(substitute)命令用来查找和替换字符串。语法如下:
:作用范围s/目标/替换/替换标志
例如 :%s/foo/bar/g 会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)
又如 :1,3s/aaa/bbb/8 会在1~3行查找aaa并替换为bbb,只有前8次出现会被替换
关于替换命令,更详细的可见博文https://www.cnblogs.com/huxinga/p/7942194.html
5.记录功能
在普通模式下,按q和某个寄存器按键{寄存器按键a-z,0-9,且不区分大小写},即可开始录入一组按键,录入完毕后,再按q即可保存录入。
例如我在按键a中记录一组命令,这组命令实现的功能是删除当前行,则依次按如下键:
q(进入记录功能)a(选择寄存器a来记录这组指令)dd(指令的内容)q(结束记录,退出记录模式)
注意中间不要有多余按键。因为vim的记录功能是完整记录该功能中所有按键被键入的顺序,中间如果有无效的操作也会被一并记录。
想要使用按键a中记录的那组命令,则依次按如下键 @a
5.历史命令
查看vim中的历史命令 :history
查看vim中历史命令 q: (待研究)
6.其他
重复上一命令 .
撤销上一命令 u
==========================
未完待续…主要包括用vim打开多个文件、切换文件、分裂窗口等内容。
介绍vim打开多个文件的博客链接在此 https://blog.csdn.net/u012062455/article/details/78640456