我试图使用:'<,'>s!^!// !在可视模式下注释掉突出显示的代码。是否可以编辑regex,以便在代码已经注释的情况下取消注释?
发布于 2014-01-26 14:06:33
其他一些答案提到插件。我目前使用的是书呆子评论,它提供了一个ci (注释倒置)命令,它可以满足您的需要。
首先,这里有几种避免注释已经注释掉的行的方法。为了简单起见,我将假设注释字符都在第一列中。要么接受一个范围,比如问题中的Visual '<,'>。
:s#^\(// \)\@!#// #
:v#^// #s!^!// !好的,如果您真的想要一个命令来切换一行是否被注释掉,那么您必须捕获该行最初是否被注释,然后用一个表达式替换:
:%s!^\(// \|\)!\=strpart('// ', strlen(submatch(1))):help /\(
:help /\@!
:help :g
:help sub-replace-expression发布于 2014-01-25 19:32:30
我使用的一个肮脏但用途非常广泛的技巧是利用:normal命令,它将模仿给定范围内的击键序列。
例如,要进行注释,请在可视模式下选择整行(使用V)并输入命令:
:normal i//这是不言而喻的:i打开编辑模式,//写入它(因为您进入了编辑模式);该命令将应用于每一行,光标定位在行的开头(因为我们用V而不是v选择了整行;否则会变得很棘手)。基于同样的想法,您可以使用以下方法删除可视选择的注释:
:normal xx(这就像它说的那样:删除前两个字符,就像您在键盘上键入的那样)。
这种方法有几个优点,包括:
{ , /*, //, #, %)的不同语言,这只是改变单个笔画的问题。:normal A //Hello world发布于 2014-01-25 19:18:46
嗯,我怀疑你只用一个正则表达式就能做到这一点,这就是为什么蒂姆·波普为此写了一个扩展:
然后,您所要做的就是用gc注释一行或视觉选择,而gc则取消注释!
https://stackoverflow.com/questions/21354913
复制相似问题