我在Windows和Linux上使用vim。在Linux上,我想将ctrl-Q设置为视觉块选择,但仍然保持behave mswin的行为,即将ctrl-v设置为粘贴。
我该如何保持behave mswin并使用ctrl-Q进入视觉块模式?
编辑:我以为mswin也会将ctrl-Q映射到视觉块模式,但在vim-gnome中,ctrl-Q没有任何反应。
我在Windows和Linux上使用vim。在Linux上,我想将ctrl-Q设置为视觉块选择,但仍然保持behave mswin的行为,即将ctrl-v设置为粘贴。
我该如何保持behave mswin并使用ctrl-Q进入视觉块模式?
编辑:我以为mswin也会将ctrl-Q映射到视觉块模式,但在vim-gnome中,ctrl-Q没有任何反应。
首先,如果您在Linux上工作,请忘记Windows的vim快捷键,例如:ctrl-v、ctrl-q、ctrl-c...
好吧,你可能会认为这不是你问题的答案。现在我来发布"答案"。
要在Linux上使ctrl-q
像ctrl-v(块选择)
一样工作,您需要告诉它您使用gvim或终端中的vim。
如果是gvim,那就更容易了,只需创建一个映射,如下:
nnoremap <c-q> <c-v>
如果你想在终端Vim中使用<c-q>
,你需要了解默认的<C-q>
在终端设置中有特殊含义。
在终端中,按下<c-q>
会发送stty start
信号。这对于首次使用ctrl-s
停止终端输出滚动,然后想要恢复很重要。也就是说,在终端Vim中,如果你按下C-q
,它会先被终端捕获。当然,你可以通过禁用stty start
定义来更改这个规则,如下所示:
stty start undef
如果你想将其设为默认值,你可以将以下内容添加到你的.bashrc
文件中(我假设你使用的是bash)。
执行此行后,您可以在vim中创建相同的映射nnoremap <c-q> <c-v>
,并在普通模式下按下<c-q>
,vim将进入块选择模式。
最后,我建议你忘记Windows映射,如果你在Linux上工作。
stty start undef
允许使用 Kent 的答案中提到的 ctrl q
),以便使用 ctrl v
进行粘贴,您可以使 ctrl v
仅在可视和插入模式下进行粘贴,并在正常模式下进行块选择。" Paste from clipboard when in insert mode.
imap <C-V> <ESC>"+gpa
" Paste from clipboard when in visual mode. (Replace whatever is selected in visual mode.)
vmap <C-V> "+gp
" Copy selection to clipboard when in visual mode.
vmap <C-C> "+y
c-v
做p
(粘贴),您可以创建如下映射:nnoremap <c-v> p
。对于我回答中的映射(<c-q> -> <c-v>
),它会达到您的要求。如果您有在 Linux 系统上使用 Windows 按键映射的充分理由,那也没问题。不管怎样,我很高兴听到一个 Windows 系统管理员将 Vim 作为主编辑器。我曾经写过一个相当长的 Windows 批处理文件(400 行),我是用我的 Linux Vim 完成的。 :D - Kent