前言
使用 Vim 编辑配置文件时,时常需要注释多行或取消多行注释。这可以通过 Vim 的“可视化块模式”对多行文本进行编辑来实现。
可视化模式(Visual Mode)是 Vim 的一种工作模式,用于选择特定范围的文本进行编辑。它有三种子模式,实现了不同类型的文本选择方式。可视化字模式(Character Mode):逐字选择文本。
可视化行模式(Line Mode):逐行选择文本。
可视化块模式(Block Mode):选择矩形块内的文本。
要在“可视化块模式”下编辑多行文本,需要得到“块操作符(Blockwise Operators)”特性的支持。它隶属于标准+(Normal、Big、Huge)特性集,详见特性表中的 visualextra 特性。在常见的 Unix-Like 系统中,vi 命令通常指向小(Small)特性集的 Vim,而 vim 命令则指向巨(Huge)特性集的 Vim。因此,我们应当使用 vim 命令编辑文件。
使用 --version 参数可以列出当前 Vim 支持的特性。其中 visual 表示“可视化模式”特性,而 visualextra 则表示“块操作符”特性,详见文档。
[root@VM_0_2_centos ~]# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 9 2019 03:17:15)
...
Huge version without GUI. Features included (+) or not (-):
...
+comments +langmap +printer +visual
+conceal +libcall +profile +visualextra
...
[root@VM_0_2_centos ~]# vi --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 9 2019 03:16:06)
...
Small version without GUI. Features included (+) or not (-):
...
+cmdline_hist +jumplist -printer +visual
-cmdline_info -keymap -profile -visualextra
...
环境本地OS:macOS Catalina 10.15.3
远程OS:CentOS 7.7.1908
Vim: 7.4
设置多行注释
使用 vim 命令打开需要编辑的文件。vim /etc/nginx/nginx.conf
使用 h、j、k、l 键将光标移动到起始行的首字符。
其中 h 左移、j 下移、k 上移、l 右移。
按 ctrl + v 进入可视化块模式。
使用 h、j、k、l 键将光标移动到结束行首字符。
按 shift + i 进入插入模式。
输入注释字符,文中是 #。
按两次 esc 退出插入模式,注释字符将出现在选中的每一行。
按一次 esc 也是可以的,但会有 1 秒左右的延迟,按两次可以消除它。延迟是由于 Vim 在等待可能与 esc 组合的按键,详见这条 Stack Exchange。
取消多行注释
使用 h、j、k、l 键将光标移动到起始行中注释字符的首字符。
按 ctrl + v 进入可视化块模式。
使用 h、j、k、l 键将光标移动到结束行中注释字符的尾字符。确保所有注释字符被选中。
按 d 删除选中的注释字符。