【问题标题】:Vim - make comment shortcutVim - 制作评论快捷方式
【发布时间】:2016-11-18 12:04:14
【问题描述】:

我经常使用 Vim 编写 LaTeX。我被告知可以使用以下命令评论许多选定的行(在可视模式下):

:'<,'>s!^!%!

同样,可以使用以下命令在可视模式下取消注释行:

:'<,'>s!^%!!

这里,'%' 表示 LaTeX 的注释符号。但我非常想制作一个快捷方式,让自己更容易使用这些命令。例如键绑定或某种功能,这样我就不必记住这种语法。如何做到这一点?

【问题讨论】:

标签: vim comments


【解决方案1】:

首先,有几个评论插件做得很好,而且它们是通用的(通常是可扩展的),因此它们适用于任何文件类型,而不仅仅是 Latex:

只是一些流行的插件。

自定义映射

也就是说,自行开发地图是一种很好的学习体验。方法如下:

首先,映射只是当某些键被按下时,Vim 将它们转换为其他键的指令(在右侧)。您的映射适用于视觉模式,因此命令为:vmap。你平时做什么?您选择要评论的行,然后按:; Vim 会自动为你插入'&lt;,'&gt;。您编写:s 命令,然后按Enter 结束。

翻译:

vmap <Leader>c :s!^!%!<CR>

&lt;Leader&gt; 是一个可配置的、未使用的键,默认为反斜杠。因此,通过按 \ 然后按 C 调用您的映射。将其放入您的~/.vimrc 以使其永久化,您就完成了。 等等!还有更多。

高级映射

首先,you should use :vnoremap;它使映射不受重映射和递归的影响。

其次,该映射是全局的,但它仅适用于 Latex 文件类型。所以,它应该只适用于 Latex buffers;有 &lt;buffer&gt; 修饰符。

您可以通过添加:autocmd Filetype tex ... 为某些文件类型定义它,并将其放入您的~/.vimrc。但是,当您为各种文件类型添加映射和其他设置时,这会变得笨拙。最好将命令放入~/.vim/ftplugin/tex_mappings.vim。 (这要求您拥有:filetype plugin on。)

vnoremap <buffer> <Leader>c :s!^!%!<CR>

从技术上讲,您应该使用&lt;LocalLeader&gt; 而不是&lt;Leader&gt;。它们默认使用相同的键,但区别在于允许为缓冲区本地映射使用不同的前缀键(仅当您需要 / 喜欢时)。

让我们为取消注释添加替代映射,通过 \Shift + C 触发:

vnoremap <buffer> <LocalLeader>c :s!^!%!<CR>
vnoremap <buffer> <LocalLeader>C :s!^%!!<CR>

请注意,您可以将两者合二为一,使用带有条件表达式的:help sub-replace-expression。如果这里有什么在你头上,别担心。无论如何,您应该使用上述插件之一:-)

【讨论】:

  • 切向相关但很重要:如果为当前文件类型适当地设置了comments 选项,则注释插件可以很好地工作。如果不是,它们就会破裂。
  • @SatoKatsura:嗯,至少 NERD 评论者内置了超过 300 种文件类型的定义(并且仅使用 'comments' 作为后备)。