2014-10-29 72 views
1

我想要做的是在puts之前和之後添加#ifdef#endif。 代碼中有數百個puts。 put中的字符串在每種情況下都不相同。我正在用vim和sublime text 2等文本編輯器處理這個問題。反覆插入行的最快方法?

有沒有更智能的方法來完成這樣的任務?

         #ifdef SOMETHING 
puts("blah blah blah"); ========>  puts("blah blah blah"); 
            #endif 
+0

您是否在vim中嘗試過'substitute'命令?或者更好的'sed'工具? – 4rlekin 2014-10-29 11:10:16

+0

感謝您的線索,我會先谷歌他們 – RNA 2014-10-29 11:15:06

+1

如果'puts'都是單行表達式,那麼你可以在Notepad ++中做這樣的事情(我也假設在ST2中)...找到'(^ puts *)'並用'#ifdef \ r \ n \ t \ 1 \ r \ n#endif'全部替換。如果使用Notepad ++,請不要忘記啓用正則表達式模式。 – jbaums 2014-10-29 11:18:57

回答

2

崇高文字:


AFAIR你可以在ST中使用多個遊標功能,例如:
「> find_all <, puts,然後 ctrl+shift+l(或類似的東西,這將給你個人光標每突出顯示的行),然後去鍵入所需的修改(這將爲每行完成相同的移動/打字)「

當然,它不適用於不同的縮進和東西,我怕......

VIM:


substitute它看起來應該或多或少是這樣的:

:%s/puts(.\{-});/#ifdef SOMETHING\n &\n#endif/g 

(雖然林不知道,如果事情就不會在這裏需要轉義)

基本上就意味着:
% - 對整個文件
s - 替代
/first_part/second_part/ - 全球 - - 與second_part
gfirst_part替代occurence意爲間%(整個文件)中找到的每個線

和第一部分是:
正常: '放(',則非貪婪(如果你不知道這意味着什麼 - 谷歌爲它,真的值得了解)任何字符的正則表達式,然後正常:');'這應該符合您放

和第二:
正常:‘SOMETHING的#ifdef’,然後換行,然後四個空格,然後&這意味着‘發現模式’(基本上這puts你的),然後換行,然後正常:'#endif'


我寫過它的頂部,所以請注意有些事情可能需要更正(ST中的快捷方式或在 substitute公式中轉義某些字符)。
感謝您的理解

+0

找到所有,'ctrl + shift + l',給了我多指針。我能夠在5秒鐘內完成任務!:D:D我會嘗試用ST代替 – RNA 2014-10-29 11:25:17

+1

,因爲它可能更少打字,並且更容易理解正在發生的事情,但是如果您打算學習vim(我的意思是像以往一樣),「substitute」就是其中的第一個命令學習方便(恕我直言) – 4rlekin 2014-10-29 11:27:19

+0

是的,我也學習vim。 – RNA 2014-10-29 11:32:11