Vim:如何以可视块模式插入?


145

在Vim中处于可视块模式(按ctrl-V)时如何插入?



1
答案的快速总结:我将答案简单地放在这里。注释太多,以至于该线程被淹死了。1)通过在Vim中键入:ver来检查您的Vim版本中是否启用了+ visualextra。2)插入时,首先标记要编辑的内容,然后按I(大写i)-小写字母我将无法使用。3)完成此操作后,看起来好像您仅在第一行插入,但是完成后,请按ESC和j,然后将文本复制到其他行。这就是我的方式。
Zeth,2013年

Answers:


202

试试这个

选择文本块后,按Shift+ i或大写字母I

小写字母i不起作用。

然后键入您想要的内容,最后将其应用于所有行,按Esc两次。




如果这不起作用...

检查+visualextra您的Vim版本是否已启用。

您可以通过输入:ver并在功能列表中滚动来做到这一点。(您可能希望将其复制并粘贴到缓冲区中,然后进行增量搜索,因为格式很奇怪。)

启用它不在此问题的范围内,但我相信您可以在某个地方找到它。


13
也不要忘记A
jmdeldin

42
在复制文本之前,还必须按Escape键退出插入模式。
布兰登·乔伊斯2014年

19
有没有人看过这行不通?我在CentOS上有一个未修改的vim设置。我按ctrl + v,再按ja几次,然后看到光标突出显示了几行的第一个字符。我按shift + i。光标移到第一行的第一个字符,但是我回到普通模式。我知道这一点是因为如果我按“ a”,则它将字符向右移动,并显示“-INSERT-”。如果我输入几个字符并按Escape键,则它不适用于其他行。
Tyler Collier 2014年

2
@TylerCollier我在digitalocean的Ubuntu 14.04上遇到问题。如果找到解决方案,请发表评论。
Zack Burt 2015年

2
@ZacharyBurt与Ubuntu 14.04一起安装的默认vim(安装为vi)不包含该visualextra功能,因此块插入在此处不起作用。sudo apt-get install vim引入了功能更全的版本,该版本已visualextra被激活。@TylerCollier这在CentOS安装上也可能是相同的问题:检查的输出vim --version以查看已激活功能的完整列表。
加百利·格兰特

40
  1. 按ctrl和v //开始选择
  2. 按下shift键,然后输入//,然后输入任何文字
  3. 按下esc esc //按下两次 esc

按之后ctrl + v,您可以按j来快速选择当前位置下方的行,或者按k来快速选择当前位置上方的行。您也可以使用shift带有updown错误的键进行选择。
tyler.frankenstein

1
在所有答案中,这是唯一对我有用的答案。我在Mac上使用Brew安装
Daniel Kaplan

我已经抱怨多年,我是不会轻易 nsert(如ç块选择焊割)。因此,有了资本i,我很惊讶。我一直:normal iINPUT<CR>在行首输入。谢谢大家!
蒂姆·维塞

我认为您不需要按两次ESC键。如果在esc之后按任何键,它将自动更新文本。如果没有,它将在半秒左右的时间内完成。
Shahbaz

29

您可能还有一个用例,其中您想删除一段文本并替换它。

像这样

Hello World
Hello World

您可以在“ W”之前视觉选择并点击Shift+ i-输入“ Cool”-点击ESC,然后通过可视块选择删除“世界”。

或者,更酷的方法是在两行中仅可视块选择“ World”。键入cchange。现在您处于该insert模式。插入所需的内容并单击ESC。两者都可以通过较少的击键反映出来。

Hello Cool 
Hello Cool

最后一步是对我有帮助,你必须打ESC那么所有的标线会显示你键入的字符。
韦伯鲁

好东西,对您有很大帮助
prosti

9

如果要在所选列之前或之后添加新文本:

  • 按Ctrl + V
  • 选择列
  • 按Shift + i
  • 写你的文字
  • 按esc
  • 按“ jj”

2
罐你,jj将更改传播到下面的所有行,这是我遗漏的最后一点!
致命的

jj是杀手!
Anh Tran
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.