如何在vim编辑器

时间:2015-10-15 10:13:29

标签: linux vim

我正在尝试为块注释创建一个自定义命令,以避免每次在vim中编写整个搜索和替换序列以便注释行。

我要做的是制作一个键组合映射,我可以将行号作为参数传递,这些映射应该传递给.vimrc文件并在那里进行处理。有可能吗?

例如,我在.vimrc中有这个

map :pc :17,21s/^/#<CR>

现在我什么时候做:pc中的vim,它会添加一个#-21的前面一行(在python中评论它们)

现在17,18在命令中是硬编码的,但是我可以对这个命令进行参数化,这样我就可以传递特殊的行号,如:17,21pc,它会在map命令中使用它们吗?

如果有可能,那么我也希望将'#'符号设置为参数,以便我可以传入特定于语言的注释符号,例如JS中的//。

1 个答案:

答案 0 :(得分:2)

映射不具备参数,但它通常是命令的工作(参见command! -range -nargs=? Comment call CommentThis(<line1>, <line2>, <q-args>) function! CommentThis(l1, l2, lead) let l:lead = a:lead == '' ? '#' : a:lead exe printf('%i,%is+^+%s', a:l1, a:l2, l:lead) endf )。

:'<,'>Comment //

你可以像这样使用它:用 V 和箭头选择一些行,然后:

:17,21Comment //
:12,45Comment              " '#' is the default

当然,您可以自行指定行号:不要选择任何内容,然后输入:

<leader>cc

注意:上面的代码远非完美,它只是一个例子。

但如果您的目标是评论某些行,那就更好了:使用cur_psql.executemany;它会根据文件类型自动选择正确的评论标题,它允许多种评论样式,它可以评论和取消注释......

以下是其使用示例:选择 V 和箭头的某些行,然后键入<leader>,默认情况下\trait A { trait A1 } object B extends A { case object B1 extends A1 } object C extends A { case object C1 extends A1 } 。< / p>