在Vim中,如何使Esc和箭头键在插入模式下工作?

Pee*_*eja 3 vim tmux

终端发送箭头键作为序列开头Esc.在Vim中,有一个选项'esckeys',允许Esc以插入模式工作的键.它是以牺牲实际Esc键立即响应为代价的,因为Vim不再知道你是只是按Esc或开始拼写箭头键.

这是我在插入模式下可以做的事情:

  1. 按箭头键,光标向该方向移动,然后
  2. 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它应该在运行时使用疯狂的箭头键绑定?还有其他想法吗?

(顺便说一句,我很乐意在插入模式下完全不使用箭头键,但我会与期望它们工作的人配对,我希望成为一个有礼貌的配对.)

rom*_*inl 6

你到底是什么问题?你的箭头键是否在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.