VIM 自定义箭头键映射无法与窗口切换一起使用?

7

我一直在尝试为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的快捷键可以正常使用,但是其他快捷键都无法使用。我已经尝试多种变体,但它们都没有任何作用。
我正在使用标准的Debian Wheezy,带有KDE桌面环境,vim从konsole运行,我只安装了NERDTree和Airline两个插件。
希望有人能够提供解决方案,因为我已经在网上搜索了几个小时并尝试了数百个选项,但似乎没有任何不同。
编辑:对于快捷键的verbatim插入根本没有任何输出,无论是在shell还是在vim中。

3
请确保KDE和终端模拟器没有<c-arrow>的快捷键。 - FDinoff
我已经检查了两个,都没有使用我在vim中尝试使用的c-arrow快捷键。 - historymaker118
你可以尝试使用verbatim插入来获取一些见解:键入Ctrl+v,然后例如Ctrl+up,以查看键码。请在[tag:shell]和[tag:vim]中执行此操作,并使用输出更新您的问题。 - pfnuesel
2
我认为 Ctrl+箭头在所有的终端模拟器中都无法被识别。请在 xterm 中尝试,也可以在按下 Ctrl+Alt+F1 后获得的控制台中尝试,并回报情况。否则,请考虑使用 leader-key 代替 Ctrl。我用 <leader>h 来表示“向左移动”等功能,这更符合 Vi 原则。 - DBedrenko
我尝试将你的配置选项复制到我的 .vimrc 文件中,但我的操作系统已经有了覆盖它的键盘快捷键。我正在使用带有 XFCE 的 Ubuntu。我稍微更改了命令,并且现在可以使用 Ctrl-(hjkl) 进行操作。这不完全是你想要的,但也许这会在你的搜索中有所帮助:nmap <silent> <C-v> <c-w>v nmap <silent> <C-h> <c-w>h nmap <silent> <C-j> <c-w>j nmap <silent> <C-k> <c-w>k nmap <silent> <C-l> <c-w>l - Kyle Challis
2个回答

2
首先,请确认 <C-Left> 没有被 konsole 处理。启动一个新的并使用 cat:
$ cat
^[[1;5D

这就是<C-Left>应该工作的方式。其他箭头也类似。如果<C-Left>不能这样工作,可以在/etc/inputrc~/.inputrc中搜索"\e[1;5D": ...并注释掉它。你可能需要注销并重新登录才能使更改生效。
接下来,使用:
:verbose map

vim 中显示所有映射快捷键及其源代码。您应该在此列表中看到您的绑定。在我的情况下,您的绑定是正确的,并且都可以正常工作。


0

试试这个:

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>

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