[英]How to replace leading spaces (only) with “ ” in Vim?
我多次遇到這個問題:我有一段源代碼,但是如果我將其復制並粘貼到 Wordpress 中並用<code>...</code>
標簽將其括起來,則開頭的空格會被“壓縮”成一。
因此,我想知道如何通過
僅在行首更改所有空格
,例如,
extend: 'Ext.panel.Panel',
變成
extend: 'Ext.panel.Panel',
:%s/^ \+/\=repeat(" ",strlen(submatch(0)))
但如果有一個更短的替代命令,我不會感到驚訝。 來吧 Vimgolfers!
使用后視斷言替換一行開頭的空格:
%s/\(^ *\)\@<= /\ /g
有三種方法可以實現我可以看到的所需編輯,下面按我個人喜好的順序列出。
使用前置原子匹配語法的替換(參見: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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.