Vim - 制作评论快捷方式

时间:2016-11-18 12:04:15

标签: vim commenting

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

只是一些受欢迎的插件。

自定义映射

也就是说,自己开发映射是一种很好的学习经历。方法如下:

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

翻译:

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

<Leader>是一个可配置的未使用密钥,默认为反斜杠。因此,按 \ 然后 C 调用映射。把它放到你的~/.vimrc中,使它永久化,你就完成了。 等待!还有更多。

高级映射

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

其次,该映射是全局的,但它仅适用于Latex filetype 。因此,它应仅适用于Latex 缓冲区;那里有<buffer>修饰符。

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

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

从技术上讲,您应该使用<LocalLeader>代替<Leader>。它们默认使用相同的密钥,但区别允许使用不同的前缀密钥进行缓冲区本地映射(仅当您需要/喜欢时)。

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

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

请注意,您可以将:help sub-replace-expression与条件表达式结合使用。如果这里有什么东西在你头上,请不要担心。无论如何,你应该使用上面提到的插件之一: - )