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 向上滚动一行