终端发送箭头键作为序列开头Esc.在Vim中,有一个选项'esckeys',允许Esc以插入模式工作的键.它是以牺牲实际Esc键立即响应为代价的,因为Vim不再知道你是只是按Esc或开始拼写箭头键.
这是我在插入模式下可以做的事情:
Esc立即按下并退出插入模式.我已经有了解决方案的开端.即便如此:set noesckeys,我仍然可以将键映射为<Up>:
imap q <Up>
Run Code Online (Sandbox Code Playgroud)
当然,q使光标上升不是一个好关键.相反,我想将我的终端模拟器的箭头键映射到一些不能启动的东西Esc(比如我永远不会输入的一些随机Unicode字符),然后将imap它们映射到Vim中的方向.
问题是:当我离开Vim时,我的箭头键将停止工作.只有Vim知道他们现在的意思.
我在iTerm2里面的tmux里面工作.有没有办法只在一个tmux窗格中生成这样的绑定?或者让Vim告知tmux它应该在运行时使用疯狂的箭头键绑定?还有其他想法吗?
(顺便说一句,我很乐意在插入模式下完全不使用箭头键,但我会与期望它们工作的人配对,我希望成为一个有礼貌的配对.)
你到底是什么问题?你的箭头键是否在Vim中工作?他们是否在tmux工作?
我在Vim/tmux中显示控制字符([A,[B...)的箭头键有问题,我通过添加解决了它
nnoremap <Esc>A <up>
nnoremap <Esc>B <down>
nnoremap <Esc>C <right>
nnoremap <Esc>D <left>
inoremap <Esc>A <up>
inoremap <Esc>B <down>
inoremap <Esc>C <right>
inoremap <Esc>D <left>
Run Code Online (Sandbox Code Playgroud)
我的~/.vimrc.