1

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

4

3 回答 3

1

要将每行中的第二个字符替换为rvim 中的:%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 回答