【问题标题】:VIM Custom arrow key mappings not working with window switching?VIM 自定义箭头键映射不适用于窗口切换?
【发布时间】:2014-01-30 15:25:16
【问题描述】:

我一直在尝试创建在 vim 中打开窗口拆分之间切换的快捷方式,而不是必须使用 ctrl+w+[箭头键] 我宁愿只能够使用 ctrl+[箭头键]。

这是我目前在 vimrc 中的内容:

map <silent> <C-v> <c-w>v
map <silent> <C-Left> <c-w>h
map <silent> <C-Down> <c-w>j
map <silent> <C-Up> <c-w>k
map <silent> <C-Right> <c-w>l

执行 vsplit 的第一个快捷方式可以正常工作,但是其他的都不起作用。我已经尝试了几种变体,但它们都没有做任何事情。

我在 KDE 中使用标准 debian wheezy,vim 从 konsole 运行,我安装的唯一插件是 NERDTree 和 Airline。

我希望有人可以帮助提供解决方案,因为我已经在网上搜索了几个小时并尝试了数百个选项,但似乎没有任何区别。

编辑 快捷方式的逐字插入根本不输出任何内容,无论是在 shell 还是在 vim 中。

【问题讨论】:

  • 确保 KDE 和终端模拟器没有 &lt;c-arrow&gt; 的快捷方式
  • 我都检查过了,都没有使用我试图在 vim 中使用的 c 箭头快捷方式。
  • 您可以尝试使用逐字插入来获得一些见解:输入 Ctrl+v 然后例如Ctrl+up,查看键码。请在shellvim 中执行此操作,并使用输出更新您的问题。
  • 我认为 Ctrl+Arrow 并未在所有终端模拟器中注册。在 xterm 以及通过按 Ctrl+Alt+F1 获得的控制台中尝试它并报告回来。否则,请考虑使用前导键而不是 Ctrl。我有 h 表示“向左移动”等等,它更符合 Vi 原则。
  • 我尝试将您的配置选项复制到我的 .vimrc 中,但我的操作系统已经有键盘快捷键覆盖它。我正在使用带有 XFCE 的 Ubuntu。我稍微更改了命令,它们现在可以使用 Ctrl-(hjkl)。这不是您想要的,但也许这会对您的搜索有所帮助:nmap &lt;silent&gt; &lt;C-v&gt; &lt;c-w&gt;v nmap &lt;silent&gt; &lt;C-h&gt; &lt;c-w&gt;h nmap &lt;silent&gt; &lt;C-j&gt; &lt;c-w&gt;j nmap &lt;silent&gt; &lt;C-k&gt; &lt;c-w&gt;k nmap &lt;silent&gt; &lt;C-l&gt; &lt;c-w&gt;l

标签: vim shortcuts arrow-keys


【解决方案1】:

首先,确保&lt;C-Left&gt; 未被konsole 处理。开始一个新的并使用cat

$ cat
^[[1;5D

这就是&lt;C-Left&gt; 的工作方式。其他箭头类似。如果&lt;C-Left&gt; 不能以这种方式工作,请在/etc/inputrc~/.inputrc 中搜索"\e[1;5D": ... 并评论它。您可能需要注销并登录才能使这些更改生效。

接下来,使用

:verbose map

vim 中显示所有映射的快捷方式及其来源。您应该在此列表中看到您的绑定。您的绑定是正确的,并且在我的情况下都有效。

【讨论】:

    【解决方案2】:

    试试这个:

    nnoremap <C-DOWN> <C-W><C-J>
    nnoremap <C-UP> <C-W><C-K>
    nnoremap <C-RIGHT> <C-W><C-L>
    nnoremap <C-LEFT> <C-W><C-H>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多