我知道组合键Ctrl+A可以跳转到当前命令的开头,而Ctrl+E可以跳转到结尾。
但是是否有办法像Cocoa应用程序中的Alt+←/→那样逐词跳转?
我知道组合键Ctrl+A可以跳转到当前命令的开头,而Ctrl+E可以跳转到结尾。
但是是否有办法像Cocoa应用程序中的Alt+←/→那样逐词跳转?
开箱即用,你可以使用相当奇怪的Esc+F将光标移动到下一个单词的开头,使用Esc+B将光标移动到当前单词的开头。
Esc
+F
或在一行的开头按下另一个键组合,它只会插入那个字母。非常令人烦恼!请注意,本次翻译未包含解释和额外内容。 - Noldorin~/.inputrc
来完全自定义它们。 - Chris Page在 macOS(所有版本)中,默认情况下以下键盘快捷键可用。
请注意,您必须将Option键设置为像Meta键一样运行。您可以通过访问终端(CMD+,)并选择配置文件 -> 键盘来完成此操作。在 iTerm2 中,选择配置文件 -> 键 -> 通用,并选择“Option键作为Esc +”。
此外,一些Emacs风格的键绑定用于简单文本导航似乎在bash shell上也可以使用。您可以使用:
/
字符,这很麻烦。有什么办法可以将/
包含在单词分隔符中吗? - Ben默认情况下,终端有以下快捷键可以移动光标(向左和向右):
您可以配置 alt+← 和 → 为您生成上述快捷键序列:
⌥ ←
,否则添加;\033b
(无法手动输入此文本)。\033f
)。或者,您可以参考TextMate上的这篇博客文章:
B
用于“后退”,将 F
用于“前进”并输入到 Esc+
字段中即可。 - Gusalt left
和 alt right
来生成那些序列。 - Arc676切换到iTerm2。它是免费的,比普通终端更好用。此外,它还有更多的自定义选项,如键盘快捷键。
我也喜欢你可以使用 cmd 和 1-9 来在选项卡之间切换。试试看,你再也不会回到普通终端了 :)
如何在 iterm2 中设置自定义键盘偏好
我经常在按箭头键时按错按钮(cmd / control / alt),因此我将这些按钮与箭头键组合起来设置为向前和向后跳转单词,但请根据自己的需要进行设置。
Ctrl + Arrow Left
或 Right
进行操作,但 Up
和 Down
可以使用:/ 已尝试设置新配置文件为默认值和不设置。 - Tobi实际上还有一种更好的方法。按住option(在某些键盘上是alt),然后按左右箭头键以单词为单位移动光标。就这么简单。
option←
option→
此外,ctrle将带您到行尾,ctrla将带您到行首。
[D
和 [C
。为了解决这个问题,在我的 .bashrc
中添加 bind '"[D": backward-word'
和 bind '"[C": forward-word'
。 - Jamie Counsell.bashrc
中添加了绑定(bind)的东西,但是它没有起作用,我做错了什么吗?(我使用RubyMine) - 张艳军.bashrc
文件。尝试使用echo "here"
命令,看看当您打开新终端时是否会显示该消息。此外,您需要关闭并重新打开终端或运行source ~/.bashrc
命令才能使其读取新文件。 - Jamie Counsell我已经让Alt+←/→生效了:打开首选项»设置»键盘,将选项光标左移的条目设置为发送字符串到shell:\033b,并将选项光标右移设置为发送字符串到shell:\033f。您也可以将此方法用于其他控制键组合。
将选项键用作元键
选项后才能正常工作。顺便说一下,这个功能非常方便,与使用Esc+B或者Esc+F相比,这个键更容易触及。 - Phương Nguyễn实际上,这取决于您使用的shell,但大多数shell具有类似的绑定。您提到的绑定(例如Ctrl+A和Ctrl+E)是许多其他程序中使用的绑定,它们已经使用了很长时间,并且在大多数UI应用程序中也可以使用。
下面是Bash的默认绑定:
请注意,您可以自定义它们。您需要创建一个文件,命名任意,我命名为.bash_key_bindings并将其放入我的主目录中。您可以在那里设置一些常规的bash选项,也可以设置键绑定。为确保它们被应用,您需要修改一个名为".bashrc"的文件,在启动时bash会读取它(如果不存在,则必须创建它),并在其中进行以下调用:
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 手册以获取更多信息。
\M
)中的“Meta”,cmd+left将是\M-\e[D
。但是,您无法将cmd+...映射到任何内容,所有命令快捷键都由终端应用程序处理(因此被吞噬),如果您打开了多个终端窗口,则cmd+left将映射到“上一个窗口”。抱歉,使用终端应用程序不可能实现。 - Mecki按住 Option 键并单击光标要移动到的位置。
如果你是Vim用户,可以尝试使用bash的vim模式。运行下面的命令或将其添加到你的~/.bashrc
文件中:
set -o vi
默认情况下,您处于插入模式;按下Esc键后,您可以像在正常模式的Vim中一样移动,因此单词的移动是w
或b
,而通常的移动键也适用。
ALT
快捷键。 - Mosty Mostacho