2014-03-29 52 views
1

我對vim和ex很新,我想知道是否有人可以幫我解決一個我很模糊的問題。我想知道如何交換每一行或模式發生的字符。例如,我將如何交換文件中每行的前兩個字符。我知道它可以完成,我很確定它涉及使用圓括號來存儲字符。但那是我所知道的。另外,假設我想用一些字符串替換everyline上的第二個字符,我該怎麼做?交換ex的字符

回答

1

在vim中將每行中的第二個字符替換爲r:%s/^\(.\)./\1r/

  • :%s/p/r/r爲(因爲%)所有行更換圖案p;
  • ^ start line;
  • \(開始一組;
  • .任何字符(本例中的第一個);
  • \)結束組;
  • .任何字符(本例中的第二個);
  • \1反向引用第一組(本例中的第一個字符);
  • r替換文字。

要交換兩個第一個字符::%s/^\(.\)\(.\)/\2\1/

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