概述
大家都知道gvim被称作编辑器之神,其在写代码、看脚本、操作文本方面的强大之处不用多说。作为一名数字芯片工程师,在工作后基本将gvim作为了默认的编辑器。笔者在此对于gvim的一些常用操作做个小结,希望能够方便到接触到gvim的伙伴们。
vim重点是光标的移动,模式切换,删除,查找,复制,粘贴,替换,撤销。
命令模式
命令模式下不能直接进行文本的编辑,可以输入快捷键进行操作(删除行,复制行,移动光标,粘贴,等等),这也是进入gvim之后的默认模式。
光标移动
hjkl:分别是向左下上右移动一格;
w:移动到下个单词的词首;e:下个单词的词尾;b:上一个单词的词首;ge:上一个单词的词尾;数字+hjkl/web(如2w, 3j)
^:移动到本行首个非空格的字符;$:移动到本行最后一个非空格的字符;0/home:移动到行首;end:移动到行尾
gg:移动到第一行
G:移动到最后一行
%:当光标在一个小括号,中括号,大括号(也可以设置匹配的关键字)上的时候,按下%后光标会快速移动到与之匹配的括号上。
光标快速移动到指定行:10gg,或者10G:移动光标到第10行;(末行模式下 :10回车;)
翻屏幕:向下翻ctrl+f(after),向上翻ctrl+b(befor);向下翻一半ctrl+d(down),向上翻一半ctrl+u(up)
H,M,L:分别是移动到当前屏幕的最上面一行行首,正中间一行的行首和最底行的行首;
zz:滚动屏幕,使得当前光标所在的行移动到屏幕中间。
删除、剪切
x(类似于delete),X(类似于backspace);
de:等效于d+e,删除至下一个单词的词尾,d2e;类似的用法还有dw,dl,d2l
daw:delete a word,
d0:从光标处删除到行首,类似的还有d^,
D:从光标处删除到行尾;
dd:删除(严格意义上是剪切,不粘贴就是删除)一行,然后使用p,可以粘贴刚刚删除的行;
复制粘贴
复制行:yy,复制当前一行;2yy,复制从当前行往下数两行;
粘贴行:p,粘贴在当前行的下面;P,粘贴在当前行的上面;
ggVG:全选中,gg+V+G;
替换
r:替换一个字符,ra,将当前光标处的字符替换成a,这里a可以是任意其他字符,如r1,rb;
R(shift+r):连续多个字符替换,先按下R进入替换编辑模式,根据光标位置做连续替换,完成编辑后,按下esc退出连续替换模式。
undo/redo
u:undo,撤销一次;
ctrl+r:redo,恢复一次;
查找搜索
搜索变量的定义:将光标移动到想要搜索的变量上面,同时highlight显示,按下gd,跳转到代码中对于变量的定义(第一次出现该变量的地方);接着使用n,跳转到该变量的下一个;N,跳转到该变量的上一个。数字+n/N
*:向后(下)寻找光标所在处的单词,类似于gd
#:向前(上)寻找光标所在处的单词
以上两种查找,n,N 的继续查找命令依然可以适用
搜索变量:/random 查找random,按n健查找下一个,按N健查找前一个。
/\<b\> 查找b,左右都是非连续的字符。如下/b和/b\>的区别:
取消高亮显示:末行命令模式下:noh回车 (no highlitht)
行内搜索:fe,向后寻找字符e(这里e可以是其他任意字符),如果找到了则光标移动到e处;Fe,向前寻找字符e;
大小写切换
首先按下v进入块操作模式,选中需要切换的代码块,然后按下:
u:全部转换为小写字母;
U:全部转换为大写字母;
~:对选中的代码块进行大小写互换;
按照路径打开
gf:在当前文本中有其他文件的路径时,按下gf(girl friend),会打开该路径下的文件;
折叠,展开
zf,zo,
zf5j:从当前行往下数5行,被折叠起来
zo:光标在被折叠的行上的时候,按下zo,撤销折叠,显示被折叠的内容
zr:重新展开所有折叠起来的代码;
zm:恢复所有的折叠;
末行命令模式
末行输入命令,进行操作(搜索、替换、保存、退出、撤销、高亮)
替换
:substitute/a/b [flags] 把当前行的第一个a换成b;其中flags为附加选项;
:100,200substitute/a/b/g 把100,200行的所有a换成均换成b;
:100,$substitute/a/b/g 把100到最后一行的所有a换成均换成b;
:%substitute/a/b/g 把所有行的所有a换成均换成b;
:.,+4substitute/a/b/g 把下面4行所有a换成均换成b;
flags选项:
g是全局(global)的意思,对每一行的所有a进行操作;
p是将所做的替换打印出来;
c是提醒用户确认(confirm)每一个替换操作;
分屏
:sp 水平分屏幕;
:vs 垂直分屏幕;
新tab
:tabnew 类似于浏览器,新开一个tab,然后可以在新tab打开文件;
历史命令
在命令模式下按q和:,则显示出历史命令,上下移动光标,可选择执行历史命令。
文件保存退出
:w 保存
:w text.c 另存为text.c
:q 退出
:wq 保存并退出
:q! 强制退出,不保存
:x 如果没有修改,则直接退出;如果有修改没保存,则先保存再退出。(少用)
其他操作
行拼接
J 将下一行拼接在当前行后面。
多文件操作
同一个gvim中可以打开多个文本;通过命令:ls来显示缓冲区中的文件,eg:分别显示文件编号,文件路径,上一次离开的时候光标所在处
:bn,离开当前文件,进入到下一个next文件;
:bp,离开当前文件,进入到前一个previous文件;
:b1,离开当前文件,进入到缓冲区编号为1的文件,这里1可以是其他任意有效的文件编号;
:bdelete 3, 删除缓冲区中编号为3的文件,
:E 关闭当前文件,打开当前路径所在的目录,可上下移动光标,按回车打开同一目录下的其他文件;
可视模式
按v进入可视模式,从光标处进行多行的选择;
按V进入行可视模式,以行为单位进行多行的选择;
按ctrl+v进入块操作模式;以矩形为单位进行代码块的选择;
在可视模式下移动光标选种代码后,可以进行复制粘贴,删除,替换等等操作;
如果取消选中代码块之后想重新选中,按gv恢复选中上次的代码块。
列操作:ctrl加v,选中代码块之后,按I,进入编辑模式,编辑完成后,按下esc,则对代码块每一行的左边新增编辑内容;同样也可以进行复制,替换,删除等操作;
快捷操作:全选:ggVG,
模式切换