gpt4 book ai didi

vim - 如何在 .vimrc 中重新绑定(bind) Ctrl-[

转载 作者:行者123 更新时间:2023-12-01 16:26:49 24 4
gpt4 key购买 nike

在 vim 中,默认情况下 Ctrl+[ 的作用类似于 Esc。但是,我想重新绑定(bind) Ctrl+[ 来执行自定义操作。 (具体来说,是 Ctrl-t,因为我发现 [] 对 ctags 具有互补作用更自然。)

但是,当我执行命令时:

:nnoremap <C-[> <C-t>

然后我的箭头键导航变得困惑。我不确定会发生什么,但显然这不是理想的方法。

我尝试解除绑定(bind) Ctrl+[ 但 vim 报告它没有绑定(bind),我尝试了一些技巧,例如首先绑定(bind) Ctrl +[ 自身,然后解除绑定(bind)。总是相同的结果。

旁注:有趣的是,当我将其添加到我的 .vimrc 时(作为最后一个命令)情况更糟。发生一些不确定的事情,vim 在以下 3 种状态之一中随机打开:

  • 底部状态行显示“E73:标记堆栈为空”,这意味着它收到了 Ctrl+t 式命令,但是如果我点击导航键如 j,它删除当前行和底行,然后将我置于插入模式。 (大约 70% 的时间发生。)

  • 有时它处于替换模式。 (发生率约为 15%。)

  • 有时处于正常模式。 (发生率约为 15%。)

如何正确地将 Ctrl+[ 重新映射到 .vimrc 中的不同函数?

最佳答案

您无法重新绑定(bind)Ctrl[。在终端中按 Escape 键会发送 Ctrl[,就像按 Tab 键会发送 CtrlI 一样。没有单独的 Esc 代码。

当你尝试这样做时,Vim 可能会表现得很疯狂,因为基本上每个 ANSI 键序列都以 Ctrl[ 开头,所以你的重新绑定(bind)会在所有终端输入上触发,按键序列中的其他内容看起来像是 vim 的更多命令。

关于vim - 如何在 .vimrc 中重新绑定(bind) Ctrl-[,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com