在 Vimrc 中创建用于注释代码行的映射

Create map for commenting line(s) of code in Vimrc

我想创建一个地图来评论 Vim 中的一行或多行代码,以便能够轻松地临时评论事物。现在,我已经完成了以下操作,它只是在所有选定行的前面插入 //

" place // at the start of current line
nmap #> ^i//<Esc>
nmap ## ^i//<Esc>
" unindent current line
nmap #< ^xx
" change indentation of multiple lines
vmap #> ^<C-v>I//<Esc>
vmap #< ^<C-v><Right>d<Esc>

这已经具有相当不错的功能,但它有点局限于具有 // 注释的语言。我希望能够根据语法突出显示规则自动检测我正在使用的语言的单行注释字符是什么,并将该字符用于(取消)注释行。我可以写一个简短的定义列表,例如 *.{c,cpp,cc,js} 中的语言 //*.py 中的 #% 中的 [=] 18=]等

此外,我希望能够检测一行的开头是否是注释,就像组合键 << 仅在代码以空格开头时取消缩进一样。我认为这可能需要使用正则表达式来完成,但这也取决于是否有可能检测到某些内容是否是评论。

我希望有可能做到这一点。

是的,有很多可能性;事实上,一些作者已经构建了成熟的健壮且可配置的插件来注释行:

所以,除非这是出于学习目的,或者如果您绝对不能安装插件(但如果您可以配置 Vim,则可以在每个 运行 上下载和安装插件) , 我强烈考虑为此使用插件。

Vim 已经为特定于文件类型的注释字符提供了 'comments' and 'commentstring' 选项。插件使用这些(至少作为后备;有些也有自己的内置列表)。