我对vim和ex很新,我想知道是否有人可以帮助我处理我模糊的区域。我想知道如何在每一行或模式的出现上交换字符。例如,我如何交换文件中每行的前2个字符。我知道它可以完成,我很确定它涉及使用括号来存储字符。但这就是我所知道的。另外,假设我想用每个字符串替换每行的第二个字符,我该怎么做?
答案 0 :(得分:1)
要将每行中的第二个字符替换为vim中的r
::%s/^\(.\)./\1r/
:
:%s/p/r/
将模式p
替换为r
所有行(因为%
); ^
开始行; \(
开始一个小组; .
任何字符(本例中的第一个字符); \)
结束小组; .
任何字符(本例中的第二个字符); \1
对第一组的反向引用(本例中的第一个字符); r
替换文字。要交换两个第一个字符::%s/^\(.\)\(.\)/\2\1/
。
答案 1 :(得分:0)
在每一行上交换前两个字符:
:%s/^\(.\)\(.\)/\2\1/g
用" string":
替换每一行的第二个字符:%s/^\(.\)\(.\)/\1string/g
有关替代命令的更多信息:http://vim.wikia.com/wiki/Search_and_replace
答案 2 :(得分: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