我有這個問題很多次: 我有一個源代碼,但如果我複製/粘貼到Wordpress和與<code>
</code>
括起來開始空間是「壓縮「合而爲一。Vim的正規表達式的幫助:改變空格「 」
因此,我想知道如何我可以通過
在行首開始時更改所有空格只有。
I.e.
extend: 'Ext.panel.Panel',
成爲
extend: 'Ext.panel.Panel',
我有這個問題很多次: 我有一個源代碼,但如果我複製/粘貼到Wordpress和與<code>
</code>
括起來開始空間是「壓縮「合而爲一。Vim的正規表達式的幫助:改變空格「 」
因此,我想知道如何我可以通過
在行首開始時更改所有空格只有。
I.e.
extend: 'Ext.panel.Panel',
成爲
extend: 'Ext.panel.Panel',
我建議以下三種解決方案以滿足那些 中的順序列出的問題我個人喜好。
使用前面的原子匹配語法進行替換(請參見:help \@<=
)。
:%s/\%(^ *\)\@<= /\ /g
如果命令的簡潔是至關重要的,人們可以使用「非常 魔術」模式(參見:help \v
)和改變捕獲組(:help \%(
)非捕獲縮短。
:%s/\v(^ *)@<= /\ /g
兩級替代, 代替這些空間,並重新加入該行。
:g/^/s/^ \+/&\r/|-s/ /\ /g|j!
另一個兩步取代,取代每個前導空格 由某個符號不文本發生的,並且改變該 符號
。
:exe"g/^ \\+/norm!v//e\rr\r"|%s/\r/\ /g
非常感謝你們所有人的回答,這非常有用。我會花一些時間閱讀vim的幫助。時間,時間,時間! –
:%s/^ \+/\=repeat(" ",strlen(submatch(0)))
但是,如果有一個較短的替代命令它不會讓我感到吃驚。來吧Vimgolfers!
您的解決方案是更好! –
這是最全面的解決方案(對我來說),我已經檢查了ib的答案,因爲有用的幫助提示。再次感謝您回答如此迅速。 –
使用向後看斷言在一行的開頭以取代只有空格precedeed空間:
%s/\(^ *\)\@<= /\ /g
呵呵,這是思考過程的有趣巧合!我沒有注意到你的答案,並提出了幾乎相同的解決方案。順便說一下,沒有必要使用捕獲組,'\('。 –
它確實使它變得更短,但是。:) –
好吧,我可以使模式更短:':%s/\ v(^*)@<=/\ /g' :-) –
使用
代替...
– emnoor