vim高级技巧
2023年04月25日星期二晴北京市北京师范大学
今天开始补充一些vim的高级技巧,以增加工作能力。对于尚没有学会使用vim的同学,可以参考我的另一篇文章vim-nvim使用手册或者也可以直接在终端使用命令vimtutor
打开手册学习(建议使用这个方法)
常用命令
2023年04月28日星期五阴北京市北京师范大学命令 | 功能 |
---|---|
dip | 在空白行使用,删除所有临近空白行 |
:g/^*$/d | 删除文档中的所有空行 |
viw | 在空白区使用,选择所有空白 |
:nohl | 清除vim高亮 |
:x | 与zz和:wq类似,但不会写入没有修改过的文件 |
插入模式,将当前文件名输入到文件中 | |
~ | 转换大小写 |
'' | 跳回上次位置 |
`' | 跳回上次位置 |
:r |
在当前位置插入文件file |
Esc | 退出插入模式 |
CTRL+[ | 退出插入模式 |
使用标签
命令 | 功能 |
---|---|
:tabnew | 打开新标签 |
:tabclose | 关闭当前标签页 |
gt | 切换到下一个标签 |
:tabp | 切换到上一个标签 |
gT | 切换到上一个标签 |
:tab ball | 在单个选项卡中打开所有缓冲区 |
:tabs | 列出所有可用的标签 |
CTRL-g | 显示当前文件名 |
切换标签命令gt
可以理解为go tab
,那反过来逆向移动正好有大写字母对应,即gT
。这和查找命令f
正向查找,F
逆向查找的道理是一样的。
使用宏命令
命令 | 功能 |
---|---|
q | 开始录制/停止录制 |
qa | 录制宏保存在寄存器a中 |
:reg a | 查看宏a命令内容 |
@a | 执行宏a |
4@a | 执行4次宏a |
由于宏是命令,所以录制宏的开始,结束,执行均是指在命令模式下按下按键。特别注意不是使用:command
这种命令方式执行。宏命令可以将反复执行的操作录制下来,最大程度上提高了工作效率。
整体移动
在写作python
程序时,需要按行对齐以区分不同的代码片段,于是出现了整体移动代码的需要。
命令 | 功能 |
---|---|
shift+> | 向右移动一个shiftwidth |
shift+< | 向左移动一个shiftwidth |
:m,n> | 将第m行到第n行向右移动1个shiftwidth |
:m,n< | 将第m行到第n行向左移动1个shiftwidth |
:m,n>> | 将第m行到第n行向右移动2个shiftwidth |
:m,n<< | 将第m行到第n行向左移动2个shiftwidth |
对于移动的宽度shiftwidth=4,可以在/etc/vimrc中设置参数。
光标移动
2023年04月26日星期三阴北京市北京师范大学命令 | 功能 |
---|---|
gg | 文档顶部 |
G | 文档底部 |
5G | 移动到第5行 |
w | 下一个单词(word) |
e | 单词尾(end) |
0 | 行首(无论是否空字符) |
$ | 行尾(和正则表达式相同) |
^ | 行首非空字符(和正则表达式相同) |
0w | 行首非空字符(和正则表达式相同) |
H | 光标移动当前可见页面的顶部(High) |
M | 光标移动到当前可见页面的中间(Middle) |
L | 光标移动到当前可见页面的中间(Low) |
( | 移到下一句的开头 |
) | 移到上一句的开头 |
{ | 移到下一段的开头(以空白行分隔) |
} | 移到上一段的开头(以空白行分隔) |
常规移动:h
:左,l
:右, j
: 下,
k
: 上,
使用vim默认的光标移动方式可以使手不离开键盘,形成肌肉记忆后效率极大的提高。
移动页面
2023年04月26日星期三阴北京市北京师范大学命令 | 功能 |
---|---|
CTRL+D | 向下翻页(Down) |
CTRL+U | 向上翻页(Up) |
CTRL+E | 向下滚动一行 |
CTRL+Y | 向上滚动一行 |