我使用 PuTTY 从我的 Win7 x64 笔记本电脑 SSH 到我办公室的 Unix 环境。我面临的问题与这个帖子我无法向终端发送 Esc 字符。我第一次注意到它是在尝试退出插入模式时vi
,但根据我在该帖子中进行的故障排除,似乎按下 Esc 键根本不起作用。
首先,让我重述一下这个问题。登录 PuTTY,打开vi
一个文件,进入插入模式,如果不按 F1 键,则无法退出:q
(退出帮助),然后我可以保存并退出文档。
其他问题中提到的第一个故障排除步骤是尝试以下操作:
python -c“打印ord(raw_input('char'))”
那么结果应该是 27。运行这个程序,我被告知我有一个空字符串(类似于其中一条评论,但这个用户再也不会回来)。
然后我尝试了评论中的下一个内容……但说实话,我不知道我在寻找什么。命令和我的结果如下:
#bind -p | grep -i '\\e' | less "\e\Cg": 中止 "\eOD": 反向字符 "\e[D”: 反向字符 “\e\Ch”:向后终止单词 “\e\C-?”:向后杀死单词 "\e[1;5D":向后单词 "\e[5D”:向后单词 "\eb":向后单词 “\e”:历史结束 "\e[6~":历史结束 "\eOF":行尾 "\e[4~":行尾 "\e[8~":行尾 "\e[F": 行尾 "\eOC": 正向字符 "\e[C": 正向字符 "\e[1;5C": 正向词 "\e[5C": 正向词 "\ef":正向单词 "\eg": glob-complete-word “\e^”:历史扩展行 "\e#": 插入注释 “\e*”:插入完成 "\e.":插入最后一个参数 "\e_": 插入最后一个参数 “\ed”:杀死单词 "\eOB": 下一个历史记录 "\e[B": 下一个历史记录 "\en": 非增量前向搜索历史记录 "\ep":非增量反向搜索历史记录 “\e=”:可能的完成 “\e?”:可能的完成 "\eOA": 先前的历史 "\e[A": 先前的历史 "\e[2~": 引用-插入 "\e\Cr": 恢复行 “\er”:恢复行 "\e ":设置标记 “\e\Ce”:shell 扩展行 "\e&": 波浪号扩展 “\et”:转置单词 "\eu": 大写单词 “\e.”:yank-last-arg “\e_”:复制最后一个参数 “\e\Cy”:yank-nth-arg “\ey”:美国流行音乐
使用Ctrl+V然后按下Esc没有任何反应,直到我按下Enter,然后显示^M
(我相信这是我通过引用该键获得的回车符 (CR) Enter)。输入Ctrl+[会让我退出vi
,所以我假设这是我正在寻找的正确字符,我只是不知道为什么我的终端似乎认为Esc没有绑定或绑定到某个随机字符。
我当前的键盘/终端功能键和键盘设置都设置为“ Esc[n~
”。我尝试将它们更改为“Linux”和“Xterm R6”,但这似乎没有任何改变。
我最近不得不为另一个应用程序添加一个隧道,并将设置更改Terminal > Features > Disable application keypad mode
为 true。后来我又将其恢复为 false,但这似乎也解决了我的问题。
我的假设是,在进行这些更改之后保存我的个人资料时,我意外地更改了现在已保存的其他内容,但恢复默认设置并登录我的服务器也不能解决问题。
我没有~/.vimrc
,而且根据管理也没有对服务器做出任何更改,所以我想我做了一些事情。
我现在的问题是:我还可以在 PuTTY 中检查什么或尝试更改哪些内容,从而改变将密钥传递给提示符的行为?是否可以只创建一个.vimrc
来强制执行此操作?我还能做些什么来使其工作?
我是这些论坛的新用户,所以如果我在布局时犯了错误,请告诉我,但任何帮助解决我的问题或帮助我指明正确方向的帮助都会很感激。
答案1
我刚刚遇到同样的问题,按Ctrl+[也会退出 Vi 中的插入模式(它是 的替代键Esc)。
为了修复此问题,我去了Terminal > Keyboard
,并将 更改Function Keys and Keypad
为VT100+ emulation
。
答案2
...再次因 vi 数字键盘无法使用而感到沮丧,我将原始问题中提到的“禁用应用程序键盘模式”改回“True/checked”。这不仅让我再次可以在 vi 中使用数字键盘,而且似乎还修复了我的 Esc 问题。
我唯一能补充的是,我的机器似乎也出现了某种 Java 错误,似乎搞乱了 Windows 更新,我们的一位 IT 技术人员已经修复了这个问题。也许这两者在不知不觉中相互关联?无论如何,我要结束这个问题了。
也许我没有正确保存我的个人资料?我很确定我已经仔细检查过了,但我也很难接受这个“神奇地自行修复”的想法。
答案3
很高兴您找到了答案,它与 PuTTY 设置有关。作为替代方案,如果 Esc 键无法按预期工作,您通常可以尝试 Ctrl-[。 ][CyberPillar][: ctrl 键键盘序列提到了这一点,][CyberPIllar][:元键。请记住这一点,因为这个技巧有时非常有用,特别是如果您经常在远程 Unix 程序(如您提到的 vi)中使用 Esc 键。
答案4
也许我有一个不同的 shell 或类似的东西,但 ctrl+alt+[ 对我来说就可以了