【问题标题】:Basic remapping in vimvim 中的基本重映射
【发布时间】:2014-06-02 12:12:55
【问题描述】:

我仍然无法理解 Vim 中的重新映射键。我的 vimrc 中有以下内容

" This works
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" But this doesn't?
nnoremap <C-+> <C-w>> " Should map to Ctrl +
nnoremap <C--> <C-w>< " Should map to Ctrl -

我正在尝试重新映射窗口调整大小键绑定,因为它们有点笨拙。太多的按键动作太少。但是,如果和前两个完全一样的写法,为什么后两个就不行了呢?

【问题讨论】:

  • 不要将 cmets 放入 nnoremaps,因为它们不是 cmets。
  • 为了更清楚,我在事后添加了该评论,在我的 vimrc 中不是这样,但感谢您的提醒。

标签: vim key-bindings remap


【解决方案1】:

我认为重点是 CTRL 修饰符在 ASCII 中的历史意义。在我的系统(Mac OS X、Vim 7.3)上,当我在 GUI 的插入模式下键入 &lt;C-+&gt; 时,我得到一个 =,当我在终端中尝试它时,我得到一个哔哔声。

短版:不是每个键都可以被&lt;C-&gt;修改。

【讨论】:

    【解决方案2】:

    由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的,即使在 GVIM 中也是如此。某些组合键,如 Ctrl + non-alphabetic 无法映射,而 Ctrl + letterCtrl + Shift + 字母 无法区分。 (除非您的终端为它发送一个独特的 termcap 代码,但大多数情况下不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于&lt;Tab&gt;/&lt;C-I&gt;&lt;CR&gt;/&lt;C-M&gt;/&lt;Esc&gt;/&lt;C-[&gt; 等(唯一的例外是&lt;BS&gt;/&lt;C-H&gt;。)这是一个已知的痛点,并且vim_dev 和#vim IRC 频道上各种讨论的主题。

    有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim 也是如此),并提出了 various proposals

    但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中提供此功能。

    【讨论】:

    • 哇,我不知道这是一个如此热门的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多