GVim Win32中仅限键盘的列块选择,或者为什么在包含mswin.vim时Ctrl-Q不能模拟Ctrl-V?

时间:2013-01-04 19:31:42

标签: windows windows-xp vi vim

我希望能够在Windows上使用GVim时仅使用键盘选择柱状块,但在Windows XP上使用gvim(7.2)时似乎无法这样做。 编辑:为方便起见,最好使用箭头键进行选择,这在其他版本的vi / vim中是很常见的。

在终端中,当使用vim来定义块时,可以通过按 Ctrl-V 并使用箭头键方便地移动光标来选择柱状块

在mswin上使用GVim时, Ctrl-V 将映射到粘贴操作。在此主题上找到的每个引用都提到在mswin上, Ctrl-Q 的设置方式与 Ctrl-V 在其他平台上的工作方式相同,但这不适用于我

经过研究表明 Ctrl-Q 行为是通过包含mswin.vim实现的,似乎gwin可能没有加载mswin.vim。 mswin.vim显然是通过_vimrc加载的。似乎mswin.vim可能没有加载,所以也许_vimrc设置不正确,但是......

C:\Program Files\Vim\_vimrc存在包含:

source $VIMRUNTIME/mswin.vim
behave mswin

C:\Program Files\Vim\vim72\mswin.vim存在且包含:

" Use CTRL-Q to do what CTRL-V used to do
noremap <C-Q>       <C-V>

C:\Program Files\Vim\_vimrc应该从Edit |开始加载GVim图形菜单中的设置窗口加载此文件进行编辑,很明显C:\Program Files\Vim\vim72\mswin.vim正在加载,因为可以在该文件中插入语法错误,GVim会在启动时抱怨它(它支持它进行测试和恢复,以防止意外腐败)。

当按下 Ctrl-Q 时,光标的变化方式与使用鼠标阻止选择文本时相同,但此时任何光标移动都会导致光标变回一个普通的光标。是否继续按住 Ctrl Ctrl-Q 并不重要。

编辑: Ctrl-Q 进入块选择模式,如光标更改所示,因为其他光标移动命令扩展了块,但是,这个问题的原始意图是学习如何使用箭头键(与编辑器的其他实现中使用的方式相同)虽然在问题的原始未答复修订中没有明确说明。

在按住鼠标左键的同时按 Alt 可以直观地选择柱状块,但在按下 Ctrl-后,在箭头键动作期间按 Alt Q 也不起作用。

研究似乎也表明在命令模式下按 v 将进入可视模式,这或许这是相关的,但使用它似乎并没有帮助这种情况。

C:\Program Files\Vim\vimfiles除了空目录结构外不包含任何内容。 C:\Documents and Settings\username不包含vim配置文件,C:\Documents and Settings\username\My Documents也不包含。通常存储应用程序特定或本地设置的其他C:\Documents and Settings\username位置也似乎没有vim设置。 %HOMEDRIVE%和环境变量也是如此。

3 个答案:

答案 0 :(得分:17)

仅使用键盘在Win32上以GVim直观选择列块的一种方法是按 Ctrl-Q ,释放它,然后按住 Shift 键使用箭头键选择列块。

为什么 Ctrl-Q 柱状选择的行为方式尚不清楚,但它并不重要,因为目标是仅使用键盘选择列块。在Vim中,使用 Ctrl-V 选择块时不使用 Shift

:help mswin未提及 CTRL-V 备选方案的细微差别。

答案 1 :(得分:3)

最好的办法是从你的vimrc中删除这些行。它们是完全不必要的,并且改变了太多基本的Vim功能。

答案 2 :(得分:0)

mswin.vim中的noremap <C-Q> <C-V>将原始命令重新映射为 Ctrl + Q

如果包含mswin.vim,按 Ctrl + Q 后,指示的模式应切换到 Visual Block ,以及任何移动(例如 j l w )扩展了视觉选择。如果这对你不起作用,你可能会有一些干扰。

这些移动命令是否已重新映射,或者autocmd上是否有CursorMoved?尝试停用您的插件(vim --noplugin)和.vimrc的大部分内容。

请注意,光标键通常不会构成正确的移动(并且它们在Vim中的使用不受欢迎)。

您认为正确(且唯一)扩展选择的方式(使用移动的光标键)只是:set selectmode=key的结果,由:behave mswin完成。