在vim中我有這樣一行文字之間:Vim的 - 將一些每一個字母
abcdef
現在我想添加下劃線或之間其他這是每一個字母,所以這將是結果:
a_b_c_d_e_f
我知道這樣做沃爾德的唯一方法是記錄這樣一個宏:
qqa_<esc>[email protected]
有沒有更好,更簡單的方法來做到這一點?
在vim中我有這樣一行文字之間:Vim的 - 將一些每一個字母
abcdef
現在我想添加下劃線或之間其他這是每一個字母,所以這將是結果:
a_b_c_d_e_f
我知道這樣做沃爾德的唯一方法是記錄這樣一個宏:
qqa_<esc>[email protected]
有沒有更好,更簡單的方法來做到這一點?
下面是一個快速和一個更加互動的方式來做到這一點,都在正常模式。
隨着光標在該行的開頭,按:
i_<Esc>x
插入和刪除的分隔符。 (我們這樣做的副作用。)gp
把分離器回來。.
,堅持下來,直到工作完成。不幸的是,我們不能在這裏使用.
的計數,因爲它只會在現場粘貼分隔符'計數'次。
:%s/\(\p\)\p\@=/\1_/g
:
開始的命令。%
搜索整個文檔。\(\p\)
將匹配並捕獲可打印的符號。例如,如果您只想匹配字符,則可以將\p
替換爲\w
。\p\@=
執行了一個超前檢查以確保匹配的(第一個)\p
後跟另一個\p
。第二個,即\p\@=
不構成比賽的一部分。這個很重要。\1
填寫匹配的(第一個)\p
值,而_
是文字。g
是標準做的全部是標誌。使用正向前查找和替代:
:%s/\(.\(.\)\@=\)/\1_/g
這將匹配任何字符後跟任意字符,除了line break
。
如果你只想字母之間添加_
,你可以做這樣的:
:%s/\a\zs\ze\a/_/g
與其他一些圖案更換\a
如果你想比ASCII字母多。
要理解這應該如何工作::help \a
,:help \zs
,:help \ze
。
這很酷,我學到了一些新東西,謝謝! –
像這樣的事情正是我一直在尋找的! –