Vim:如何在可视块模式下插入?
Posted
技术标签:
【中文标题】Vim:如何在可视块模式下插入?【英文标题】:Vim: How to insert in visual block mode? 【发布时间】:2012-09-06 03:30:25 【问题描述】:在 Vim 中处于可视块模式(通过按 ctrl-V)时如何插入?
【问题讨论】:
VIM Blockwise Insert 的可能重复项 【参考方案1】:试试这个
选择文本块后,按Shift+i或大写I。
小写 i 不起作用。
然后键入您想要的内容,最后将其应用于所有行,按 Esc 两次。
如果这不起作用...
检查您是否在您的 Vim 版本中启用了+visualextra
。
您可以通过输入:ver
并滚动浏览功能列表来执行此操作。 (您可能希望将其复制并粘贴到缓冲区中并进行增量搜索,因为格式很奇怪。)
启用它超出了这个问题的范围,但我相信你可以在某个地方找到它。
【讨论】:
在复制文本之前,您还必须按 Escape 退出插入模式。 有没有人见过这不起作用?我在 CentOS 上有一个未修改的 vim 设置。我按 ctrl+v,按 j 几次,我看到光标突出显示了几行的第一个字符。我按shift+i。光标移动到第一行的第一个字符,但我回到了正常模式。我知道这一点,因为如果我按“a”,它会将字符向右移动,并显示“-- INSERT --”。如果我键入几个字符并按转义键,它不会应用于其他行。 @TylerCollier 我在 digitalocean 上的 Ubuntu 14.04 上遇到了这个问题。如果您找到了解决方案,请发表评论。 @ZacharyBurt 随 Ubuntu 14.04 安装的默认 vim(安装为vi
)不包括 visualextra
功能,因此块插入在那里不起作用。 sudo apt-get install vim
带来了一个功能更全面的版本,在该版本上激活了visualextra
。 @TylerCollier 这也可能在您的 CentOS 安装中出现同样的问题:检查 vim --version
的输出以查看已激活功能的完整列表。
@Zachary Burt,正如 Broandon Joyce 所说,也许您在将字符插入到第一个选定的行后忘记按 ESC,此操作才会生效。看到这个链接***.com/questions/1676632/…【参考方案2】:
您可能还有一个用例,您想删除一段文本并替换它。
这样
Hello World
Hello World
您可以在“W”之前可视块选择并点击Shift+i - 输入“Cool” - 点击ESC 然后删除“世界”通过视觉块选择。
或者,更酷的方法是just visual block在两行中选择“World”。为 change
键入 c。现在您处于insert
模式。插入你想要的东西并点击ESC。两者都通过较少的击键得到反映。
Hello Cool
Hello Cool
【讨论】:
最后一步对我有帮助,你必须点击ESC
,然后所有标记的行都会显示你输入的字符。
好东西,很有帮助【参考方案3】:
-
按 ctrl 和 v // 开始选择
按 shift 和 i // 然后输入任何文本
按 esc esc // 按 esc 两次
【讨论】:
按ctrl + v
后,您可以按j
快速选择当前位置下方的行,或按k
快速选择当前位置上方的行。您还可以使用带有up
或down
错误的shift
键进行选择。
在所有答案中,这是唯一对我有用的答案。我在使用 brew install 的 Mac 上
多年来我一直在抱怨我无法在块选择中轻松insert(如change)。所以它是大写的i
,我很惊讶。我一直在使用:normal iINPUT<CR>
在行首输入。非常感谢!
我认为您不需要按两次 esc。如果您在 esc 后按任何内容,它将自动更新文本。如果没有,它会在半秒左右完成。【参考方案4】:
如果您想在所选列之前或之后添加新文本:
按 ctrl+v 选择列 按 shift+i 写下你的文字 按 esc 按“jj”【讨论】:
谢谢你,jj
将更改传播到下面的所有行是我遗漏的最后一点!
jj
是个杀手!
有人能解释一下jj
吗?我无法找到任何关于它的东西,而且对我来说似乎没有必要。 ?
jj 有助于将您的更改传播到所有其他行...如果在您的情况下不需要它,可能是因为在较新版本的 VIM 中有所更改
是的,我的版本也不需要它,但很高兴知道以防万一。以上是关于Vim:如何在可视块模式下插入?的主要内容,如果未能解决你的问题,请参考以下文章