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快速选择当前位置上方的行。您还可以使用带有updown 错误的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:如何在可视块模式下插入?的主要内容,如果未能解决你的问题,请参考以下文章

vim快捷键

vim 详解

vim的常用操作

vim的一些常用命令

VIM

Vim:在可视模式下选择文本块的更快方法