[英]Keyboard-only column block selection in GVim Win32, or why does Ctrl-Q not emulate Ctrl-V when mswin.vim is included?
我希望能够在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来实现的,似乎很可能没有被GVim加载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-Q后的箭头键动作中的Alt也不起作用。
研究似乎也表明在命令模式下按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%和环境变量也是如此。
仅使用键盘在Win32上以可视方式选择GVim中的列块的一种方法是按Ctrl-Q ,释放它,然后按住Shift键同时使用箭头键选择列块。
为什么Ctrl-Q柱状选择的行为方式尚不清楚,但由于目标是仅使用键盘选择列块,因此无关紧要。 在Vim中,使用Ctrl-V选择块时不使用Shift 。
:help mswin
没有提到CTRL-V替代品的这种细微差别。
最好的办法是从你的vimrc中删除这些行。 它们是完全不必要的,并且改变了太多基本的Vim功能。
mswin.vim中的noremap <CQ> <CV>
将原始命令重新映射到Ctrl + Q.
如果包含mswin.vim,则在按下Ctrl + Q后 ,指示的模式应切换到Visual Block ,并且任何移动(例如j , l , w )都会扩展视觉选择。 如果这对你不起作用,你可能会有一些干扰。
这些移动命令本身是重新映射的,还是CursorMoved
上有autocmd
? 尝试禁用插件( vim --noplugin
)和.vimrc
大部分内容。
请注意,光标键通常不会构成正确的移动(并且它们在Vim中的使用不受欢迎)。
您认为正确(且唯一)扩展选择的方式(使用移动的光标键)只是以下结果:set selectmode=key
,如下所示:behave mswin
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.