假设我有一堆台词:
@Override
public void draw(Graphics g) {
g.setColor(Color.MAGENTA);
g.fillRect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
g.setColor(Color.BLACK);
g.drawRect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
}
字符串
当我想用//
注解掉它们时(我更喜欢行注解而不是块注解),我所做的是:
- 将光标放在
@
符号的前面 Ctrl-V
:切换进入块选择模式- 使用
j
的多次命中选择列,直到}
右括号 Shift-I
:进入block-insert- 型号
//
ESC
要激发Enter
完成命令
-->这些行现在被注解掉了。
有没有更简单的方法可以让我不需要进行块选择?我发现我可以使用像:'<, '>s/^/\/\///g
这样的替换,但这有两个问题:
1.它非常笨拙,容易出错(需要转义多个向前和向后斜杠)
1.它将注解符号(//
)放在行的开头(位置0),而不是该行的第一个字符所在的位置(因此缩进丢失)。
如何使用Vi将//
插入到选定行的每行第一个字符的位置?
5条答案
按热度按时间o8x7eapl1#
如何使用Vi在选中的行中的第一个字符的位置插入//?
虽然,我同意其他人的观点,专用插件是必须的,但是,因为它是在OP中制定的,这是一个很容易的任务,可以实现为一行程序:
字符串
现在选择一些文本,按下“gc”,瞧,它工作了。要强制使用
//
而不是默认的/**/
,请为您的缓冲区设置以下选项:setlocal cms=//\ %s
。参见:h 'cms'
。c9x0cxw02#
“我有一个'切换评论功能',看起来像“参考:https://stackoverflow.com/a/24652257/2571881
字符串
所以,一旦你在
~/.vimrc
上有了这个函数,你就可以做:型
busg9geu3#
用
q
创建一个宏,把它放入a
缓冲区,在给定的行上点击qa
。然后按I//
跳转到行的开头,并注解掉它。点击ESC和q
,现在你的宏完成了。这个宏将注解掉当前行。完整的命令是
qaI//
ESCq
现在用
V
直观地选择一堆行,然后输入:norm!@a
在这些行上运行a
宏。这将注解掉一堆行。录制另一个宏来执行与
qb^xx
相反的操作。您可以将这些宏保存在.vimrc中,并将特定的宏Map到组合键,如果您想“保存”这些命令的话。
wgmfuz8q4#
您可以为
:substitute
定义自定义Map或命令。然而,有几个评论插件可以很好地做到这一点,并且这些插件是通用的(并且通常是可扩展的),因此它们适用于任何文件类型:
我强烈建议使用这些插件之一,而不是试图重新发明一个可怜的解决方案自己。
plupiseo5#
我用评论作为另一个答案,但一些想法:
<C-v>jjjjj
可以是<C-v>}
或<C-v>/}<CR>
:substitute
不必使用/
作为分隔符::'<,'>s-^-//
:'<,'>normal! I//