我在windows和linux上使用vim。在linux上我想将ctrl-Q设置为可视块选择,但仍然保持行为mswin,将ctrl-v设置为粘贴。
如何保持mswin的行为并使用ctrl-Q进行可视阻止模式?
编辑:我虽然mswin也会将ctrl-Q映射到visual block模式,但是在vim-gnome中ctrl-Q什么都不做
答案 0 :(得分:10)
首先,我强烈建议你忘记windows vim快捷方式,如果你在Linux机器上工作。例如:ctrl-v,ctrl-q,ctrl-c ......
你必须认为这不是你问题的答案。现在我发布了“答案”。要使ctrl-q
在Linux机器上工作为ctrl-v (block selection)
,您必须告诉您,您使用 gvim 或 vim in terminal 。
如果是 gvim ,则更容易,只需创建一个映射,例如:
nnoremap <c-q> <c-v>
如果您想在终端vim中使<c-q>
正常工作,您需要了解默认<C-q>
在您的终端设置中有特殊含义。
在您的终端中,按<c-q>
会发送stty start
信号。当您首次stop
终端输出滚动(ctrl-s
),然后您想要恢复时,这一点很重要。也就是说,在终端vim中,如果按下C-q
,它将首先被终端捕获。您当然可以通过禁用stty start
定义来更改该规则。像:
stty start undef
如果你想将它作为默认值,你可以将它添加到你的.bashrc
文件中(我假设你使用的是bash)。
执行此行后,您可以在vim中创建相同的映射nnoremap <c-q> <c-v>
,并在正常模式下按<c-q>
,vim将进入逐块选择模式。
毕竟,再次,如果您使用Linux机箱,我建议您忘记Windows映射。
答案 1 :(得分:1)
如果您不想更改终端设置(stty start undef
以允许使用肯特答案中提到的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