如何在zsh中退出ESC模式?

时间:2017-03-31 21:28:53

标签: shell unix zsh

当使用zsh时,我有时会意外地按Escape退出习惯,期望它像在Windows中一样清除整行。相反,它进入了一种我不确定如何摆脱的模式。光标返回一个字符,有些键执行一些特殊命令,但我真正想做的就是退出这个模式,并按Ctrl + U清除该行。

搜索周围很难 - 我得到了逃避角色的结果。

1 个答案:

答案 0 :(得分:4)

简答:按a

中等答案:按a,然后输入bindkey -e

答案很长:与许多UNIX shell一样,zsh具有类似emacs的模式和类似vi的模式。你处于类似vi的模式,ESC会让你退出类似vi的插入模式。 a使您返回插入模式,光标位于当前字符之后。 (对不起“模式”的两种不同用法,但在两种情况下都是公认的术语。)

bindkey -e会覆盖rc文件中的设置,并将zsh置于emacs模式,该模式只有一种模式(即没有“ESC模式”),所以这不会再困扰你了。不幸的是,它不会延续到你的下一个shell调用。 bindkey -v会从emacs模式切换回vi模式。

在没有任何其他配置的情况下,zsh默认为emacs模式,所以除非其中一个rc文件中存在某些内容,否则可能的罪魁祸首是EDITOR变量是某种形式的vi,这会导致zsh默认为vi模式。如果你不喜欢vi模式,那么你应该找到系统范围或用户特定配置的哪一部分导致zsh默认为vi模式,并通过删除它或在其中一个rc中覆盖它来关闭它文件。