2011-03-14 137 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>"