我使用的是Vim,希望複製某些行中的第一個單詞,然後將其粘貼在由4個空格分隔的單詞之後。下面是一個例子。Vim先複製第一個單詞,然後再用4個空格隔開單詞後打印
football
run
phone
watch
然後會變成:
football football
run run
phone phone
watch watch
我只想被應用到線186到1413,我能做到這一點使用Vim的視覺模式,但必須有一個更快的方法。
我使用的是Vim,希望複製某些行中的第一個單詞,然後將其粘貼在由4個空格分隔的單詞之後。下面是一個例子。Vim先複製第一個單詞,然後再用4個空格隔開單詞後打印
football
run
phone
watch
然後會變成:
football football
run run
phone phone
watch watch
我只想被應用到線186到1413,我能做到這一點使用Vim的視覺模式,但必須有一個更快的方法。
可以與substitute
命令和線路範圍做到這一點:
:186,1413s/^\w\+/& &/
186,1413
是線(開始,結束)進行操作的範圍內。 s
是substitute
(見:h substitute
)的簡稱,它執行正則表達式搜索和替換。 ^\w\+
匹配任何單詞字符(字母數字和下劃線,不帶空格)。 & &
用自己,四個空格和自身再次替換匹配的單詞。
第一個單詞後面的任何文字都會被追加到行尾。
可以使用:normal
命令:
:186,1413norm! yw4A ^[p
的^[
按ctrl-v
然後ESC
對不起,我應該提到一些字的字符是特殊字符,如O,E,A ,'這個單詞直到這些字符被複制。因此,「o'leary」這個詞只會被複制,直到'so only「o」被複制到行尾。單詞goöball,只有「go」纔會被複制到行尾。 – user2743
你可以使用'[a-zA-Z \ u0100- \ uFFFF]'(per [vim-regex-matches-unicode-characters-are-as-non-word](http://stackoverflow.com/a/ 31178814/719547))而不是'\ w'來直接匹配Unicode字符,但那不會匹配撇號。相反,您可能更適合使用匹配到第一空間的正則表達式。 –