如何在Vim中注释单行或多行代码块?

6
在 CSS 文件中,这一行被用于 5 个以上的规则。
border: 1px solid black;

我想这样评论此行:

/*border: 1px solid black;*/

有没有一种方法可以快速地对这5个重复的注释进行操作?

我能否分配一个按键来注释单行或多行代码块?

我不想搜索和替换这一行,我希望设置一个键,这样当我悬停在一行上并按下该键时,该行将被注释;或者选中一行或多行代码块,如果我按下该键,该行或多行代码块将被注释。

3个回答

11
我建议使用宏来实现此操作。宏会被自动保存在Vim中,并且可以跨会话使用。
要录制宏,请输入以下命令:q<letter><commands>q,其中<letter>是a-z中的任何一个字母,用于指定宏存储的寄存器。然后,您只需输入要记录的命令,最后再次按下q来停止录制。
对于您的情况,您可以执行以下操作。按下q,然后按下a选择寄存器a,接下来进入插入模式并在一行的开头和结尾输入/**/。再次按下q来停止录制。
现在,只需将光标移动到任何一行,然后按下@a即可在该行上执行宏。

3

我认为你需要尝试使用NERD Commenter插件来辅助VIM。在我看来,这是最好的此类任务工具。


3
为什么不使用正则表达式来做这件事呢?
:1,$s/border: 1px solid black;/\/*border: 1px solid black;\*\//

1,$s 的意思是,你的替换应该从第 1 行到最后一行 $ 进行。请记住,你必须转义像 */ 这样的字符。

根据 Stackoverflow 上的这个问题,你可以将以下内容放入你的 .vimrc 文件中。

vnoremap <C-r> "hy:%s/\(<C-r>h\)/\/\*\1\*\//gc<left><left><left>

现在,您可以通过视觉标记一行并按ctrl+r,获得正确的正则表达式。现在,您会被逐行询问是否要进行注释,并且可以通过按y来完成。


1
我不想搜索和替换这一行,我想设置一个键,这样当我悬停在一行上并按下该键时,该行将被注释或选择一行或选择一块行,如果我按下该键,则该行或块行将被注释。 - shibly
2
使用反向引用来节省打字。此外,您可以在开头使用“%”代替范围“1,$”。 - Konrad Rudolph
我不想搜索和替换。 - shibly
这个问题不是在这个链接中解决了吗:https://dev59.com/v3RB5IYBdhLWcg3wQVSV - frosch03
1
你为什么“不想搜索和替换”?这种方法有什么问题吗? - Nikodemus RIP
搜索和替换将会耗费时间。 - shibly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接