VIM多行写错结果(行尾)

时间:2013-09-26 14:24:24

标签: vim

我在VIM中打开了以下文件内容:

123 
234 
345 
546 
567 
678 
789 
~
~
~
~
~

我想将;添加到每行的末尾。为此,我转到第一行的末尾,并按CTRL + v使用垂直选择。

我选择第一个 7行(带数字的行),然后按SHIFT + I并将光标移动到行尾。我写;然后按Esc

结果如下:

123;
2334
3435
5436
5637
6738
7839

......虽然我期待:

123;
233;
343;
543;
563;
673;
783;

为什么会发生这种情况,我该如何解决?

请注意,这只是重现问题的一个示例。我知道我可以使用正则表达式或宏来做同样的事情,但我想找到上述问题的答案。

3 个答案:

答案 0 :(得分:2)

使用以下命令:

:1,7 s/$/;/

编辑:将 Shift + I 更改为 Shift + A 即可实现你的目的。

答案 1 :(得分:2)

Shift + I 用于在视觉块选择开始时预先;通过将光标移动到最后,你已经毁了它! (Vim似乎没有意识到你已经移动了光标,并且认为你已经开始编辑的3是你输入的内容。这是否是一个bug是有争议的。)

您需要使用的是 Shift + A 在所有选定行的末尾附加

答案 2 :(得分:1)

你只告诉vim替换第一次出现。相反,转到第1行的末尾并按ctrl-v并选择文件的底部。然后按:移动到命令行。现在将显示:'<,'>。如果您在此处键入s/$/;/g并点击返回,则会在每个选定行的末尾显示一个分号。

希望这有帮助。