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

标签 vim tmux

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

这是我希望能够在插入模式下执行的操作:

  1. 按箭头键并使光标朝该方向移动,然后
  2. Esc并立即退出插入模式。

我已经开始找到解决方案了。即使有:set noesckeys ,我仍然可以将键映射到 <Up>像这样:

imap q <Up>

当然,q不是使光标上升的好键。相反,我想将我的终端模拟器的箭头键映射到不以Esc开头的东西。 (就像一些我永远不会输入的随机 Unicode 字符)然后 imap这些是 Vim 中的说明。

问题是这样的:当我离开 Vim 时,我的箭头键将停止工作。现在只有 Vim 知道它们的意思。

我正在 iTerm2 内的 tmux 中工作。有没有一种方法可以使这样的绑定(bind)仅存在于一个 tmux Pane 中?或者让 Vim 通知 tmux 它应该在运行时使用疯狂的箭头键绑定(bind)?还有其他想法吗?

(顺便说一句,我很高兴自己在插入模式下根本不使用箭头键,但我与希望它们起作用的人结对,并且我希望成为一对有礼貌的搭档。)

最佳答案

您的问题到底是什么?你的方向键在 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>

到我的~/.vimrc

关于vim - 在 Vim 中,如何使 Esc 和箭头键在插入模式下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813855/

相关文章:

vim - 在 Gvim 中滚动时屏幕闪烁

linux - 在 tmux 显示消息中显示选项的当前值

tmux - 最大化时 tmux 栏和终端窗口底部之间的令人讨厌的填充

tmux - 我可以在命令行上将配置文件直接传递给 tmuxinator 吗?

shell - 在 fish shell 中运行时 vim 启动时的 vim 错误

regex - Vim 提取/复制文件中的所有多行模式

在 VIM 中选择多行双引号之间的文本

svn - 将 vim-diff 配置为在用于 svn-diff 时显示不同的颜色

tmux - N 次不活动后在 tmux 中显示大时钟

macos - tmux 不重新连接