【问题标题】:vim: Use ctrl-Q for visual block mode in vim-gnomevim:在 vim-gnome 中使用 ctrl-Q 进行可视块模式
【发布时间】:2014-02-16 01:40:33
【问题描述】:

我在 windows 和 linux 上使用 vim。在 linux 上,我想将 ctrl-Q 设置为可视块选择,但仍保持将 ctrl-v 设置为粘贴的行为 mswin。

如何保持 mswin 的行为并使用 ctrl-Q 进行可视块模式?

编辑:我虽然 mswin 也会将 ctrl-Q 映射到可视块模式,但在 vim-gnome 中 ctrl-Q 什么都不做

【问题讨论】:

    标签: vim


    【解决方案1】:

    首先,我强烈建议您如果您在 linux 机器上工作,请忘记 windows vim 快捷方式。如:ctrl-v、ctrl-q、ctrl-c……

    你一定认为这不是你问题的答案。现在我发布“答案”。

    要让ctrl-q 在 linux 机器上像 ctrl-v (block selection) 一样工作,你必须说,你使用 gvimvim in terminal

    Gvim

    如果是gvim,那就更简单了,只需要创建一个映射,比如:

    nnoremap <c-q> <c-v>
    

    终端 Vim

    如果你想让&lt;c-q&gt; 在你的终端vim 中工作,你需要了解默认的&lt;C-q&gt; 在你的终端设置中有特殊的含义。

    在您的终端中,按&lt;c-q&gt; 将发送stty start 信号。当您首先stop 终端输出滚动(通过ctrl-s)然后您想要恢复时,这一点很重要。也就是说,在终端vim中,如果你按下C-q,它将首先被终端捕获。您当然可以通过禁用stty start 定义来更改该规则。喜欢:

    stty start undef
    

    如果您想将其设为默认值,您可以将其添加到您的.bashrc 文件中(我假设您使用的是 bash)。

    执行此行后,您可以在 vim 中创建相同的映射 nnoremap &lt;c-q&gt; &lt;c-v&gt;,并在正常模式下按 &lt;c-q&gt;,vim 将进入逐块选择模式。

    毕竟,如果你在 linux 机器上工作,我建议你忘记 windows 映射。

    【讨论】:

    • 但是等等,我不明白那只是将 ctrl+v 重新映射到 ctrl+q。使用行为 mswin ctrl+v 粘贴,这样只会使 ctrl+q 从 * 寄存器粘贴,不是吗?我想要 ctrl+v 粘贴和 ctrl+q 进入视觉选择。在 win 和 linux 上工作,我不能有不同的映射,这会让我发疯,作为多年的 Windows 管理员,mswin 感觉更自然。
    • 如果这样可以简化事情,我也会专门使用 gvim(在这种情况下为 vim-gnome)。
    • @user1028270 如果你想让c-vp(粘贴),你可以使用我的答案(&lt;c-q&gt; -&gt; &lt;c-v&gt;)中的映射创建映射:nnoremap &lt;c-v&gt; p,它会做你想做的事。如果你有充分的理由在 linux 机器上使用 win-keymap,那很好。无论如何,对我来说,很高兴听到 Windows 管理员使用 vim 作为主编辑器。我曾经写过一个相对较长的 win-batch 文件(400 行),我是在我的 linux vim 中完成的。 :D
    【解决方案2】:

    如果您不想更改终端设置(stty start undef 以允许使用 ctrl q,如 Kent 的回答中所述)以便能够使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 2018-12-30
      • 2014-04-09
      相关资源
      最近更新 更多