我多次遇到过这个问题:
我有一个源代码,但是如果我将其复制/粘贴到Wordpress中并用<code>
</code>
将其括起来,则将起始空格“压缩”为一个。
因此,我想知道如何通过
更改行开头的所有空格 。
即
extend: 'Ext.panel.Panel',
变为
extend: 'Ext.panel.Panel',
答案 0 :(得分:4)
:%s/^ \+/\=repeat(" ",strlen(submatch(0)))
但如果有更短的替代命令,我不会感到惊讶。来吧Vimgolfers!
答案 1 :(得分:2)
使用后面的断言来替换前面只有空格的空格:
%s/\(^ *\)\@<= /\ /g
答案 2 :(得分:2)
我会提出以下三个解决问题的解决方案 根据我的个人喜好列出如下。
使用前面的原子匹配语法替换(参见: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