vim:在vim-gnome中使用ctrl-Q进行可视块模式

9

我在Windows和Linux上使用vim。在Linux上,我想将ctrl-Q设置为视觉块选择,但仍然保持behave mswin的行为,即将ctrl-v设置为粘贴。

我该如何保持behave mswin并使用ctrl-Q进入视觉块模式?

编辑:我以为mswin也会将ctrl-Q映射到视觉块模式,但在vim-gnome中,ctrl-Q没有任何反应。

2个回答

16

首先,如果您在Linux上工作,请忘记Windows的vim快捷键,例如:ctrl-v、ctrl-q、ctrl-c...

好吧,你可能会认为这不是你问题的答案。现在我来发布"答案"。

要在Linux上使ctrl-qctrl-v(块选择)一样工作,您需要告诉它您使用gvim终端中的vim

Gvim

如果是gvim,那就更容易了,只需创建一个映射,如下:

nnoremap <c-q> <c-v>

终端Vim

如果你想在终端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上工作。


但是我不明白的是,这只是将ctrl+v重新映射到ctrl+q。使用behave mswin,ctrl+v是粘贴,那么这样做只会使ctrl+q从*寄存器中粘贴,对吧?我想要ctrl+v进行粘贴,ctrl+q进入可视选择模式。在win和linux上工作时,我不能为每个系统设置不同的映射,否则会让我发疯。而且作为一名Windows管理员多年来,behave mswin感觉更自然。 - red888
我也专门使用gvim(在这种情况下是vim-gnome),如果这样可以简化事情的话。 - red888
1
如果您想让 c-vp(粘贴),您可以创建如下映射:nnoremap <c-v> p。对于我回答中的映射(<c-q> -> <c-v>),它会达到您的要求。如果您有在 Linux 系统上使用 Windows 按键映射的充分理由,那也没问题。不管怎样,我很高兴听到一个 Windows 系统管理员将 Vim 作为主编辑器。我曾经写过一个相当长的 Windows 批处理文件(400 行),我是用我的 Linux Vim 完成的。 :D - Kent

1
如果您不想更改终端设置(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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接