2016-11-21 18 views
1

我使用的是Vim,希望複製某些行中的第一個單詞,然後將其粘貼在由4個空格分隔的單詞之後。下面是一個例子。Vim先複製第一個單詞,然後再用4個空格隔開單詞後打印

football 
run 
phone 
watch 

然後會變成:

football football 
run run 
phone phone 
watch watch 

我只想被應用到線186到1413,我能做到這一點使用Vim的視覺模式,但必須有一個更快的方法。

回答

1

可以與substitute命令和線路範圍做到這一點:

:186,1413s/^\w\+/& &/ 

186,1413是線(開始,結束)進行操作的範圍內。 ssubstitute(見:h substitute)的簡稱,它執行正則表達式搜索和替換。 ^\w\+匹配任何單詞字符(字母數字和下劃線,不帶空格)。 & &用自己,四個空格和自身再次替換匹配的單詞。

第一個單詞後面的任何文字都會被追加到行尾。

+0

對不起,我應該提到一些字的字符是特殊字符,如O,E,A ,'這個單詞直到這些字符被複制。因此,「o'leary」這個詞只會被複制,直到'so only「o」被複制到行尾。單詞goöball,只有「go」纔會被複制到行尾。 – user2743

+0

你可以使用'[a-zA-Z \ u0100- \ uFFFF]'(per [vim-regex-matches-unicode-characters-are-as-non-word](http://stackoverflow.com/a/ 31178814/719547))而不是'\ w'來直接匹配Unicode字符,但那不會匹配撇號。相反,您可能更適合使用匹配到第一空間的正則表達式。 –

1

可以使用:normal命令:

:186,1413norm! yw4A ^[p 

^[ctrl-v然後ESC

相關問題