GVIM 使用技巧
本文参考《GVIM 教程基于明德扬课程》哔哩哔哩_bilibili
1. GVIM三种模式
GVIM 有三个操作模式,分别是命令模式、编辑模式和列操作模式。
- 默认 GVIM 是命令模式。
- 在命令模式下,输入 i 进入编辑模式。
- 在任何模式下,按 Esc 进入命令模式。
- 在命令模式下,按 ctrl+q 进入列操作模式。
2. GVIM常用指令
- 补全命令
ctrl+p:编辑模式,输入开头字母,按下ctrl+p,会出现下拉菜单,此时按上下键寻找需要的代码,按回车选择。 - 跳转命令
gg:命令模式,跳转至第一行
G:命令模式,跳转至最后一行
:nu:命令模式,输入:加行号,跳到指定行号
~:命令模式,返回之前所在行 - 搜索命令
*:命令模式,光标位于所在代码上,按下*便可高亮所有该代码,按下n和N便可上下寻找
n:向下寻找
N:向上寻找
/:按下”/+搜索内容“,也可以高亮所有搜索内容 - 删除行命令
dd:删除光标所在行
2dd或d2d:删除光标所在后两行(算上光标所在行) - 复制粘贴全选行命令
yy:复制光标所在行
2yy或y2y:复制光标所在后两行(算上光标所在行)
ggvG: 全选
ggyG: 全选复制
"+y: 跨文件复制命令
p:粘贴
"+p: 跨文件粘贴命令 - 文件指令
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑命令历史 - 撤回指令
u:(:undo)撤回
crtl+r:redo 重做
3. GVIM高级技巧
- 替换命令
在命令模式下,输入:%s/xx/yy/gc,然后输入y点回车。%s表示作用与整个文档,xx表示文档中需要替换的内容;yy表示替换后的内容;
“g” 标记表示替换行中的所有匹配点。
“%” 范围前缀表示在所有行中执行替换,如果仅仅对当前行进行操作,那么只要去掉%即可。
“c” 标记表示Vim 会在每次替换前提示你 - 如果需要在某个代码块中替换信号,比如将cnt替换为cnt0,这个代码块位于第10到第15行,则需要在命令模式下输入 :10:15s/cnt/cnt0/gc
- 列删除方法:常用于删除连续几列中的某些字符
比如现在要删除43到49行中的put
step1:在编辑模式下选择43行的第3个字符到49行的第5个字符,如上图
step2:按下Ctrl+q
step3:按下Delete键 - 列插入方法
step1:按下Ctrl+q进入列操作模式
step2:通过h、j、k、l选择要插入的范围 or 通过鼠标选择
step3:选好范围后,按下大写的"I(i)",输入要插入的内容
step4:按esc退出 - 列复制方法
step1:在编辑模式下选择
step2:按下Ctrl+q
step3:y+p
4. GVIM替换与正则表达式
替换命令格式“ :%s/正则表达式/要替换的字符串/选项”
https://blog.csdn.net/Andy_ICer/article/details/111538979
正则表达式
替换实例
- 把所有的help或者Help都替换为大写的HELP;
:%s/[Hh]elp/HELP/g -
删除每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
“\s\+$”表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的部分是空的:"//”。这样就会删除那些匹配的空白字符。
- 在第15到16末尾加分号;
:%s/.$/\;/g;
”.“表示匹配到的是非空行的最后一个字符 - 例化技巧
:24,30s/\(\s*\)\(\w*\)\(\s*\):.*/\1\2\3=> \2_s,/g
\(\s*\)匹配一堆空白字符 分组1
\(\w*\)匹配一堆单词字母下划线字符 分组2
\(\s*\)匹配一堆空白字符 分组3
.*表示任意多个任意字符,:.*表示":"连同后面任意字符
该命令表示将:.*表示":"连同后面任意字符替换为=> \2_s,
5. GVIM对齐
- 自动对齐上一行
选中16到17,ctrl+v进入visual模式
按下"="(默认自动对齐上一行)