我正在尝试为块注释创建一个自定义命令,以避免每次在vim中编写整个搜索和替换序列以便注释行。
我要做的是制作一个键组合映射,我可以将行号作为参数传递,这些映射应该传递给.vimrc文件并在那里进行处理。有可能吗?
例如,我在.vimrc中有这个
map :pc :17,21s/^/#<CR>
现在我什么时候做:pc中的vim,它会添加一个#-21的前面一行(在python中评论它们)
现在17,18在命令中是硬编码的,但是我可以对这个命令进行参数化,这样我就可以传递特殊的行号,如:17,21pc,它会在map命令中使用它们吗?
如果有可能,那么我也希望将'#'符号设置为参数,以便我可以传入特定于语言的注释符号,例如JS中的//。
答案 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>