快速注释多行代码是编程工作中经常遇到的一种场景,Vim教程网(https://vimjc.com)之前有文章介绍过三种Vim下快速注释/取消注释多行的方法

本文介绍一款 Vim 下高效率添加注释(或取消注释)的插件:nerdcommenter

nerdcommenter 插件与NERDTree插件的作者是同一个人 (插件名都相似),在 GitHub 上收获了超过 3500 个 star,且仓库一直有更新。

nerdcommenter 插件支持 C、C++、Java、Python 等多种语言的代码注释功能 (使用了 Vim 的 commentstring 选项),为了保证 nerdcommenter 插件能识别出当前源码文件的类型,需要打开 Vim 加载文件类型插件的功能,即需要在 Vim 的配置文件中添加 filetype plugin on 配置项。

一、nerdcommenter插件安装方法

与任何一款流行的 Vim 插件安装方法类似,nerdcommenter 插件可使用 PathogenVundleVim-Plug 等多种 Vim 插件管理器进行安装、也可以通过下载源码进行手工安装。

若使用 Vundle 安装 nerdcommenter 插件,需要中 Vim 的配置文件中添加 Plugin 'preservim/nerdcommenter',再通过在 Vim 的命令行模式下执行 :BundleInstall 命令完成插件的安装。

若使用 Vim-plug 安装 nerdcommenter 插件,需要中 Vim 的配置文件中添加 Plug 'preservim/nerdcommenter',再通过在 Vim 的命令行模式下执行 :PlugInstall 命令完成插件的安装。

若选择手工安装 nerdcommenter 插件,在 Linux 系统下执行下述命令,将 NERD_commenter.vim 文件下载到本地的 ~/.vim/plugin/ 路径下即可。

1
curl -fLo ~/.vim/plugin/NERD_Commenter.vim --create-dirs https://raw.githubusercontent.com/preservim/nerdcommenter/master/plugin/NERD_commenter.vim`

二、nerdcommenter插件使用方法

nerdcommenter 插件默认配置下,在 Vim 的普通模式可视化模式下,常用命令的作用如下 (:下述的具体命令描述,都是以 Vim 的默认 leader 键 \ 为例进行说明):

  • [count]<leader>cc :注释从当前行往下数的 count 行,count 可省略,默认值为 1 (ccNERDCommenterComment 的缩写)。例如,\cc 表示注释光标所在当前行,而 2\cc 则表示注释从光标所在当前行往下的连续 2 行。

Vim-NERDCommenterComment

  • [count]<leader>cu:取消注释从当前行往下数的 count 行,count 可省略,默认值为 1 (cuNERDCommenterUncomment 的缩写)。例如,\cu 表示取消注释光标所在当前行,而 5\cu 则表示取消注释从光标所在当前行往下的连续 5 行。

  • [count]<leader>ci:切换从当前行往下数的 count 行的注释状态 (ciNERDCommenterInvert 的缩写)。例如,假设光标所在当前行已经被注释掉,那么在当前行上执行 2\ci 命令,将会取消注释从光标所在当前行往下的连续 2 行;假设光标所在当前行并未被注释,那么在当前行上执行 \cc 命令,将会注释掉光标所在当前行。

Vim-NERDCommenterInvert

  • <leader>c$:注释掉从当前光标所在位置到行尾的剩下内容,等价于在光标当前所在位置插入注释符 ( c$ 表示 NERDCommenterToEOL 的缩写。

  • <leader>cA:在光标所在当前行行尾添加注释符号并进入 Vim 的插入模式( cANERDCommenterAppend 的缩写)。

Vim-NERDCommenterAppend

除了上述常用的命令外,nerdcommenter 插件还支持 [count]<leader>cl<leader>ca 等命令,详细用法和说明请通过 :help nerdcommenter 命令查看。

此外,还可以通过修改 g:NERDSpaceDelimsg:NERDCustomDelimiters 等选项修改 nerdcommenter 插件的默认配置,在此不再赘述。

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~