2012-12-11 31 views
4

我有很多喜歡全名的文件....使用VIM製作首字母縮略詞?

Light Machine Gun 
Statistical Analysis System 
etc 

我想捕捉每一個字的第一個字符在一條線上,並希望進行的首字母縮寫。例如輕機槍就是LMG等等。我想在VI編輯器中將它記錄爲一個宏,並在整個文件中運行它。如果任何人都可以幫助我,那將會很棒嗎?提前致謝。

回答

5

假設每行一個名稱和該單詞的空格分開,下面的工作:

%s/\(\w\)\w*\ */\1/g 

如果你也想利用每個字母,添加了情況的標誌(\u):

%s/\(\w\)\w* */\u\1/g 

的 「非常神奇」 的版本(見:help /magic):

%s/\v(\w)\w*\s*/\u\1/g 
+2

你試過嗎?它不起作用。但是這樣做:'%s/\(\ w \)\ w * \ s */\ 1/g'。 – glts

+0

@glts:我做過了,但是我在發佈時複製了錯誤的位。謝謝。 – Thor

+0

你知道爲什麼'%s/\(\ w \)\ w * \ s +/\ 1/g'不起作用嗎?這應該匹配多個空格,對嗎? (我是vim regex的新手)。 – oyenamit

3

Vim可以定義首字母縮寫,稱爲縮寫,說你要

Light Machine Gun Statistical Analysis System -> LMGSAS 

只需輸入:

:ab LMGSAS Light Machine Gun Statistical Analysis System 

,只要你鍵入LMGSAS它將替代它。

使用:ab列出所有的縮寫,una xxxxx以unabbreviate的東西。最後abc清除一切。

編輯:我誤解了你的問題,如果你試圖去,單詞 - >縮寫,那麼Thor推薦的正則表達式s/\(\w\)\w*\s*/\1/g工作正常。

+0

它不直接回答這個問題,但是知道你是否想反過來工作是有用的。 –

+0

我編輯包含一個實際的方式來解決這個問題,顯然人們發現這個答案有用,雖然所以我會離開它 – jozefg

相關問題