我最近刚从bash切换到zsh,但是我想念我的Alt+ LeftArrowKey和Alt+一次RightArrowKey来回去一个单词。
现在,如果我按Alt+ 键,LeftArrowKey我会退回几个字母,然后卡住。我不会再往后退了,也不会像我期望的那样用Alt+ 返回到行尾RightArrowKey。我什至不能使用箭头键转到行尾,只能倒数第二行。无法在该行上输入新字符或删除。
我如何找回我心爱的捷径?
如果重要的话,我在Mac OS X上使用Terminal。
我最近刚从bash切换到zsh,但是我想念我的Alt+ LeftArrowKey和Alt+一次RightArrowKey来回去一个单词。
现在,如果我按Alt+ 键,LeftArrowKey我会退回几个字母,然后卡住。我不会再往后退了,也不会像我期望的那样用Alt+ 返回到行尾RightArrowKey。我什至不能使用箭头键转到行尾,只能倒数第二行。无法在该行上输入新字符或删除。
我如何找回我心爱的捷径?
如果重要的话,我在Mac OS X上使用Terminal。
Answers:
运行,cat
然后按键以查看您的快捷方式发送的代码。
(按Ctrl+ C杀死cat
完成后的代码。)
对我来说,(ubuntu,konsole和xterm)按Alt+ ←发送^[[1;3D
,所以我会输入.zshrc
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word
(实际上,我更喜欢使用Ctrl+箭头逐字移动,就像在Windows或linux gui下的普通文本框中一样。)
相关问题:在Terminator Terminal Emulator中运行Zsh时,修复.zshrc中的键设置(Home / End / Insert / Delete)
^[[D
,我正在报告,而ctrl + v正在报告^[OD
。Ctrl + v的建议有效,但cat的建议无效。此外,ctrl + v对于alt + <-和alt +->都报告了相同的内容。通过查看cat的输出并将任何“ [[”替换为“ O”,我能够添加这两个值
^[^[[C
用于正向单词和^[^[[D
反向单词,但是由于某种原因,在.zshrc中对这些单词进行更新无法正常工作。
bindkey "^[^[[D" backward-word
和bindkey "^[^[[C" forward-word
在〜/ .zprofile为我工作!
对于使用iTerm的任何人,无论使用哪种shell
我认为,此处提供的所有解决方案都采用向后的方法。实质上,您是在告诉外壳程序监听您在终端中设置的某些esc序列或其他键绑定,在切换外壳程序时会造成兼容性问题(如果您将SSH切换到其他外壳程序,则从BASH切换到ZSH等,然后您会丢失一些(如果不是全部的话)。
大多数外壳程序都有一组预先绑定的默认序列。此外,尽管它们不是100%一致的,但它们足够接近。因此,我发现在shell中为特定操作创建键绑定的最简单方法是告诉您的终端应用程序绑定到在shell之间一致的默认键绑定。
我写了一个压缩解决方案,让你的终端以响应尽可能接近原生Mac键绑定在这里
打开iTerm首选项⌘+ ,并导航至Profiles
选项卡(Keys
可以使用该选项卡,但是向个人资料中添加快捷键允许您保存个人资料并将其同步到多台计算机)和keys
子选项卡并输入以下内容:
向左移动光标一个字
⌥+ ←发送十六进制代码:
0x1b 0x62
向右移动光标一个字
⌥+ →发送十六进制代码:
0x1b 0x66
不仅在ZSH中,而且在将SSH SSH到运行BASH,irb / pry,node等的服务器中时,这也应该给您所需的行为。
bindkey | grep forward-word
您应该看到已"^[f" forward-word
返回,但如果没有,则有2个选项。映射到返回的其他一个,或添加"^[f" forward-word
到您的中.zshrc
。
"^[f"
似乎是forward-word
用于所有shell 的最一致使用的绑定,并且在我的bash版本中默认是唯一的一组绑定。
在OSX Mountain Lion上,为〜/ .zshrc添加以下内容对我有用。
bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word
bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
在MacOS High Siera 10.13.6或Mojave 10.14.2上并将iTerm2与ZSH结合使用要移开单词,我必须这样输入:
bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
另一个解决方案对您不起作用
在Mavericks(10.9.4)上,代码为1; 5 ...因此,要使用箭头绑定alt,我需要使用.zshrc:
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
您可以使用CTRL + V,然后使用您要使用的命令
在优胜美地中使用Rob的解决方案
bindkey "[C" forward-word bindkey "[D" backward-word