我知道组合Ctrl+A可以跳转到当前命令的开头,Ctrl+E可以跳转到结尾。
但是有没有办法像Cocoa应用程序中的Alt+←/→那样逐字跳转呢?
我知道组合Ctrl+A可以跳转到当前命令的开头,Ctrl+E可以跳转到结尾。
但是有没有办法像Cocoa应用程序中的Alt+←/→那样逐字跳转呢?
当前回答
实际上,这取决于您使用的shell,但大多数shell都有类似的绑定。你提到的绑定(例如Ctrl+A和Ctrl+E)是你会在许多其他程序中找到的绑定,它们已经使用了很长时间,顺便说一下,在大多数UI应用程序中也适用。
下面是Bash的默认绑定:
最重要的Bash键盘快捷键
还请注意,您可以自定义它们。您需要创建一个文件,如您所愿,我将其命名为.bash_key_bindings,并将其放入我的主目录中。在这里,您可以设置一些通用的bash选项,也可以设置键绑定。为了确保它们被应用,您需要修改一个名为”的文件。bash在启动时读取的Bashrc(如果它不存在,则必须创建它),并在那里进行以下调用:
bind -f ~/.bash_key_bindings
~表示bash中的主目录,如上所述,您可以根据自己的喜好命名文件,也可以将其放置在您喜欢的位置,只要您提供正确的路径+名称进行绑定。
让我向您展示我的.bash_key_bindings文件的一些摘录:
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off
这些只是设置了几个选项(例如禁用铃声;这些都可以在bash网页上找到)。
"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert
它们确保字符本身不做任何事情,只是确保字符是“类型化的”(它们将自己插入shell)。
"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line
这很有趣。如果我单独按Ctrl+D(我选择D表示删除),什么都不会发生。但是如果我输入一个小写的w,光标左边的单词就会被删除。但是,如果我输入一个大写字母,光标右边的单词就会被杀死。对于从游标开始的整条线,l和l也是如此。如果我输入一个“a”,整行实际上被删除了(游标之前和之后的所有内容)。
我在Ctrl+F上设置了向前跳转一个单词,在Ctrl+B上设置了向后跳转一个单词
"\C-f": forward-word
"\C-b": backward-word
正如你所看到的,你可以创建一个快捷方式,它会立即导致一个动作,或者你可以创建一个快捷方式,它只是初始化一个字符序列,然后你必须输入一个(或多个)字符来导致一个动作发生,如上面的例子所示。
因此,如果您对默认绑定不满意,可以随意定制它们。这里有bash手册的链接以获取更多信息。
其他回答
从Mac OS X Lion 10.7开始,终端默认将option -左/右箭头映射为Esc-b/f,所以现在bash和其他使用这些emacs兼容键绑定的程序都内置了这个功能。
切换到iTerm2。它是免费的,而且比普通的老式终端要好得多。此外,它还有更多的自定义选项,比如键盘快捷键。
另外,我喜欢你可以使用cmd和1-9来切换选项卡。尝试一下,你将永远不会回到常规终端:)
如何在iterm2中设置自定义键盘首选项
安装iTerm2 启动,然后转到首选项窗格。 选择键盘配置文件选项卡 您需要将配置文件复制到新的文件中,然后删除快捷键(如^+右/左),或者如果您不关心备份,只需从默认配置文件中删除它们。 接下来,确保您修改的配置文件被选中(带星号)
现在选择键盘选项卡(最上面一行)
单击加号按钮添加一个新的键盘快捷键 在第一个框中键入CMD+左箭头 在第二个框中选择“发送转义码” 在第三个框中输入字母B
重复使用所需的组合键。escape+B向左移动一个单词,escape+f向右移动一个单词。 你也可以设置cmd+d,用转义+d删除光标前面的单词
我经常用箭头键按错按钮(cmd / control / alt),所以我有我的箭头键组合,这些按钮都设置为向前和向后跳转,但请做最适合你的。
这是CLI的方式,验证它在bash上工作。
在~/.inputrc中添加以下代码:
# macOS Option + Left/Right arrow keys to move the cursor wordwise
"\e\e[C": forward-word
"\e\e[D": backward-word
这种方法的优点是它与终端应用程序无关——不管你是否使用终端。app、iTerm2或任何其他应用程序。
灵感来自于另一个答案。
我有Alt+←/→工作:打开首选项»设置»键盘,设置选项光标向左发送字符串到shell: \033b,并设置选项光标向右发送字符串到shell: \033f。您也可以将此用于其他控制键组合。
只要检查“使用选项作为元键”选项在终端>首选项>设置>[配置文件]>键盘,在这里已经提到了@ crisr -page。
但是请注意,在macOS Catalina(10.15)和更新版本中,zsh成为新添加用户的默认shell:它的默认配置仅将空白视为单词边界,而旧的bash将元左/右跳转到最近的非字母数字字符(类似于B/W,而不是vim中的B/W):
v----v- bash jumps here
$ vim some-folder/what.txt_<- jump left twice from here
^---^- zsh jumps here by default
(类似的动作也适用于元退格)
有不止一种方法使zsh命令行编辑器导航工作类似于bash -这里是一个这样的方法:
# Place in your profile init script, e.g. `~/.zshrc`
autoload -U select-word-style
select-word-style bash