Vim 视觉块插入/附加不';行不通
我使用Ctrl-V选择一个文本块,但当我随后键入Shift-a或Shift-I时,我的vim编辑器仅在我开始视觉块模式的位置进入插入模式 比如说,Vim 视觉块插入/附加不';行不通,vim,Vim,我使用Ctrl-V选择一个文本块,但当我随后键入Shift-a或Shift-I时,我的vim编辑器仅在我开始视觉块模式的位置进入插入模式 比如说, Here is text 我想要 #Her #is #text 但我得到: #Here is text 确保使用ESC而不是Ctrl C退出可视块 此外,Vim不在可视块模式下实时更新,您必须离开可视块模式以在其他行上显示更改 您将只看到: #Here is text 进入视觉块并插入#后,但一旦按ESC键离开视觉块模式,它应该如下
Here
is
text
我想要
#Her
#is
#text
但我得到:
#Here
is
text
确保使用ESC而不是Ctrl C退出可视块 此外,Vim不在可视块模式下实时更新,您必须离开可视块模式以在其他行上显示更改 您将只看到:
#Here
is
text
进入视觉块并插入#
后,但一旦按ESC键离开视觉块模式,它应该如下所示:
#Here
#is
#text
Ctrl-V->选择块->按I->键入#
然后按ESC键
更多详情:
:h v_b_I
你可以看到:
Visual-block Insert *v_b_I*
With a blockwise selection, I{string}<ESC> will insert {string} at the start
of block on every line of the block, provided that the line extends into the block.
视觉块插入*v_b_I*
使用分块选择,I{string}将在开始处插入{string}
块的每一行上的块,前提是该行延伸到块中。
对我来说,问题是我使用的是行视觉模式(即按V
进入视觉模式),而不是块视觉模式(即使用Ctrl-V
进入视觉模式)。还要注意的是,您必须使用
退出可视模式(或者在英文键盘上使用Ctrl-[
)而不是使用Ctrl-c
,这是非常正常的。我遇到了这个问题。可能是您的Ctrl-V在GUI级别被截获和转换。您的终端程序可能会在vim看到它之前捕获Ctrl-V并将其更改为其他内容。对我来说,这是很久以前我摆弄K时发生的事情onsole快捷键并将Ctrl-V重新映射到Shift+ins以解决兼容性问题。要解决此问题,我转到konsole->settings->configure shortcuts->删除Ctrl-V到Shift+ins的重新映射。证明是否存在这种情况的一种方法是在vimrc中使用vim将不同的击键重新映射到Ctrl-V以绕过拦截。对于我来说,同样的问题是在M上使用zshac,下面的答案都不起作用。我可以很好地使用Ctrl-V,而且经常使用,但Shift-I将我从视觉模式踢到普通(不是多行)插入模式。请确保通过某种移动(移动计数、匹配的移动等)来选择块。如果您使用文本对象突出显示该块,那么我观察到这种行为,它只是恢复为在原始光标位置插入。请注意,Ubuntu 14.04安装的默认vim(安装为vi
)不包括visualextra
功能,因此块插入在那里不起作用。sudo-apt-get-install-vim
带来了一个功能更全的版本,在这个版本上,visualextra
被激活。你可以检查vim--version
的输出以查看激活功能的完整列表。esc
是关键。我已经正在使用C|C退出插入模式。|注意“等待1秒,插入的文本将出现在每一行”我进入按i(shift+i)
在zsh
步骤中,出于某些原因,它似乎只编辑了一行OK它似乎只在我单击Esc后生效
编辑后,是否仍有vim实时显示多列编辑更改是!如果您看到“--可视行--”底线中的文本将不起作用。也使用CTRL+V代替我,Vim有三种视觉模式--视觉--
,--视觉行--
和--视觉块--
,A和I仅用于--视觉块--
。
rpm -qa | grep vim
vim-enhanced-7.4.160-1.el7.x86_64
vim-common-7.4.160-1.el7.x86_64
vim-filesystem-7.4.160-1.el7.x86_64
1/just remove vi and use vim instead
or
2/alias vim='vi' in your bashrc
or
3/ln -s $(which vim) $(which vim|sed 's/vim/vi/g')