0

我在 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;

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

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

4

3 回答 3

2

Shift+I用于在可视块选择的开头添加;通过将光标移动到最后,你毁了它!(Vim 似乎没有识别出你已经移动了光标,并认为3你开始编辑的地方就是你输入的内容。这是否是一个错误还有待商榷。)

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

于 2013-09-26T14:33:02.160 回答
2

使用以下命令:

:1,7 s/$/;/

编辑Shift:将+更改IShift+A可以达到您的目的。

于 2013-09-26T14:28:33.567 回答
1

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

希望这可以帮助。

于 2013-09-26T14:32:27.293 回答