在ex中交换字符

时间:2014-03-29 23:40:21

标签: vim vi ex

我对vim和ex很新,我想知道是否有人可以帮助我处理我模糊的区域。我想知道如何在每一行或模式的出现上交换字符。例如,我如何交换文件中每行的前2个字符。我知道它可以完成,我很确定它涉及使用括号来存储字符。但这就是我所知道的。另外,假设我想用每个字符串替换每行的第二个字符,我该怎么做?

3 个答案:

答案 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