2011-03-14 51 views
2

我一直用vim 4周,我想知道如何做到这一点:重复命令块

我想评论在Ruby代码中添加“#”。我可以做'。'为所有线路。但是如果我有很多评论的话呢?

是否有一些命令我可以在块上做到这一点?

不是:这并不意味着只能放一个'#'。你可以用交互式选择做一个块

:%s/^\(.*)/#\1 

回答

4

你可以做可视块模式。 ctrl + v在行的开头,然后将光标向下移动多少行,如你想注释掉的,点击shift + i然后#然后转义,它会把#放在所有这些行的前面。我个人使用tComment。有很多插件可用于评论处理。

http://www.vim.org/scripts/script.php?script_id=1173

+0

+1,它为使用Vim内置的功能提供了一个简单的解决方案。 Visual Block模式非常强大。 – alesplin 2011-03-14 18:37:49

1

对于所有的线,你可以做到这一点

:%s/^\(.*)/#\1/c 

Vim会提示在每场比赛来代替(回答是或否)

我想有一种方法可以用行号,也可以是一组行,但我现在没有想法。

编辑:那么块(如评论建议吧)这样做:

vip (in normal mode to select the block) 
:'<,'>s/^\(.*\)/#\1/ 

:'<,'>s/^/#/ 
+0

或者只是'%s/^ /#/'...要在特定的行号之间进行操作,只需传递一个范围,就像您已经经过的那样。 '%'是一个范围,相当于'1,$'(到最后一行)。 '40,78s/^ /#/'作用于第40至78行。 – sidyll 2011-03-14 16:40:17

+0

@sidyll啊好!现在,我们应该找到一个意思是:我猜目前选定的行。 – 2011-03-14 16:41:33

+0

''<,'> s/^ /#/':-)如果您选择的行是''<' and ''>',当您按':'时会自动插入。它们意味着选择的开始和结束。 – sidyll 2011-03-14 16:44:28

2

你需要列块的选择。

开始选择CTRL-V,按4j,然后我(首都i)。

+0

不起作用 – 2011-03-14 18:14:27

+0

@Thorpe Obazee:它与您接受的解决方案有什么不同? – Benoit 2011-03-14 19:36:56

+0

对不起。但你的答案是不完整的。当我输入'#'时,你错过了。 – 2011-03-15 12:07:58

0

答案已被接受,但您可能会觉得这很有用。 <leader>/评论一个区块,<leader>?取消评论。以视觉模式或正常运动工作,如3,/来评论3行,假设逗号为您的枫树。

map <leader>/ :s/^\(\s*\)/# \1/<CR>:nohl<CR>" 
map <leader>? :s/^\(\s*\)# /\1/<CR>:nohl<CR>"