我在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;
为什么会发生这种情况,我该如何解决?
请注意,这只是重现问题的一个示例。我知道我可以使用正则表达式或宏来做同样的事情,但我想找到上述问题的答案。
答案 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
并点击返回,则会在每个选定行的末尾显示一个分号。
希望这有帮助。