我对 vim 和 ex 很陌生,我想知道是否有人可以帮助我解决我模糊的领域。我想知道如何在每一行或每出现一个模式时交换字符。例如,我将如何交换文件中每一行的前 2 个字符。我知道这是可以做到的,而且我很确定它涉及使用括号来存储字符。但这就是我所知道的。另外,假设我想用一些字符串替换每一行的第二个字符,我该怎么做?
问问题
140 次
3 回答
1
要将每行中的第二个字符替换为r
vim 中的:%s/^\(.\)./\1r/
::
:%s/p/r/
p
用所有行替换模式r
(因为%
);^
起跑线;\(
开始一个小组;.
任何字符(本例中的第一个字符);\)
结束小组;.
任何字符(本例中的第二个);\1
回溯到第一组(本例中的第一个字符);r
替换文本。
交换前两个字符::%s/^\(.\)\(.\)/\2\1/
.
于 2014-03-29T23:53:28.567 回答
0
交换每一行的前两个字符:
:%s/^\(.\)\(.\)/\2\1/g
用“字符串”替换每一行的第二个字符:
:%s/^\(.\)\(.\)/\1string/g
有关替代命令的更多信息:http: //vim.wikia.com/wiki/Search_and_replace
于 2014-03-29T23:51:49.490 回答
0
您可以执行以下操作来交换缓冲区中每一行的前两个字符:
:%norm xp
或者:
:%s/\v^(.)(.)/\2\1
您需要该:global
命令将上述命令应用于与特定模式匹配的每一行:
:g/foo/norm xp
或者:
:g/foo/s/\v^(.)(.)/\2\1
参考:
:help :normal
:help :global
:help :s
:help range
于 2014-03-30T10:24:15.527 回答