我的vimrc中有一个映射,向下注释了c代码的区域:
nmap comc :normal! I//<ESC>
由于'normal'ex命令隐式地将诸如“Ncomc”之类的输入转换为“。,。+ N-1 comc”,因此我可以向下调整注释而无需多次击键且不离开正常模式。然而,这是vim范围可以做的非常有限的子集。如果我愿意冗长,我可以像这样做出向上的评论:
.,.-5 normal comc
在编辑文本时,我更喜欢键入类似“-6comc”的内容,或者使用向上范围的“Comc”映射。我没能成功。
类似地,范围操作支持评论,直到达到搜索模式,例如:
.,/int main/ comc
但是,如果没有打字,我会这么做。
答案 0 :(得分:3)
您请求的行为通常使用:h map-operator
映射完成。通过此评论,3行向下将变为comc2j
,但现在就可以轻松推出3行:comc2k
。
您也可以在不更改映射的情况下使用可视模式:V2kcomc
。您必须使用相同的xnoremap
和lhs
添加rhs
,因为nnoremap
仅适用于普通模式。 (And do not use nmap
.)
第三个选项是将-
映射到移动{count}
行并将计数放回原点的内容:
nnoremap <expr> - (v:count ? ":\<C-u>\n" . (v:count-1) . 'k' . v:count : '')
。这假设您正在撰写6-comc
,而不是-6comc
。
//顺便说一句,如果是插件,我会建议The NERD Commenter
。
答案 1 :(得分:1)
尽管在没有任何插件的情况下尽可能地去做是值得称赞的,但有时它们只是最好的选择。当您开始使用包含#
或(*
... *)
评论的语言时,您会怎么做?为这些注释字符添加新映射?
我建议commentary.vim进行文件类型感知评论。
commentary.vim 中的默认评论运算符为gc
。您可以将它与运动结合使用,也可以在可视模式下使用它。
您的使用案例:
向下注释N行(例如3)::.,.+3normal gcc
,或gc3j
或4gcc
。
评论超过5行::.,.-5normal gcc
,或只是gc5k
。
评论到int main
::.,/int main/-1normal gcc
,或只是gc/int main
后跟 Enter 。