我知道组合 Ctrl + A 跳转到当前命令的开头, Ctrl + E 跳到最后。
但有没有办法逐字跳转,比如Cocoa应用程序中的 Alt + ← / →?
答案 0 :(得分:519)
开箱即用,您可以使用非常奇怪的 Esc + F 移动到下一个单词的开头, Esc + < kbd> B 移动到当前单词的开头。
答案 1 :(得分:384)
在Mac OS X上 - 以下键盘快捷键默认工作。请注意,您必须在终端首选项(键盘标签下)中将选项键设置为 Meta
我观察到简单文本导航的默认emacs键绑定似乎适用于bash shell。你可以使用
答案 2 :(得分:272)
默认情况下,终端具有可以逐字移动(左右)的快捷键:
您可以配置 alt + ←和→为您生成这些序列:
⌥ ←
(如果有),或者添加(如果不存在)。\033b
(不能键入这个文字手动)。\033f
)或者,你可以在textmate上参考这篇博文:
答案 3 :(得分:157)
切换到iTerm2。它比普通的旧终端更自由,更好。此外,它还有更多自定义选项,如键盘快捷键。
此外,我喜欢您可以使用 cmd 和1-9在标签之间切换。尝试一下,你将永远不会回到常规终端:)
如何在iterm2中设置自定义键盘首选项
我经常用箭头键击中错误的按钮( cmd / control / alt ),所以我的箭头键组合这些按钮都设置为前进和后退单词,但请做最适合你的。
答案 4 :(得分:142)
实际上有一种更好的方法。按住选项(某些键盘上的 alt )并向左或向右按箭头键可以按字词移动。就这么简单。
选项 ←
选项 →
ctrl e 会带你到行尾, ctrl a 会带你去一开始。
答案 5 :(得分:78)
我有 Alt + ← / →正在工作:打开首选项»设置»键盘,设置条目for 选项光标左到将字符串发送到shell:\ 033b ,并将选项光标右设置为将字符串发送到shell:\ 033f 。您也可以将其用于其他Control键组合。
答案 6 :(得分:38)
实际上它取决于你使用的shell,但是大多数shell都有类似的绑定。你所指的绑定(例如 Ctrl + A 和 Ctrl + E )是你会发现的绑定许多其他程序,它们使用了很长时间,BTW也适用于大多数UI应用程序。
以下是Bash的默认绑定:
Most Important Bash Keyboard Shortcuts
另请注意,您可以自定义它们。您需要根据需要创建一个文件名,我将我的名字命名为.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 <上向后跳了一个单词/ p>
"\C-f": forward-word
"\C-b": backward-word
正如你所看到的,你可以创建一个快捷方式,直接导致一个动作,或者你可以创建一个,只是在一个字符序列中,然后你必须输入一个(或多个)字符来引起一个动作发生在上面的例子中所示。
因此,如果您对默认绑定不满意,请随意根据需要自定义它们。这是link to the bash manual以获取更多信息。
答案 7 :(得分:14)
如果您在首选项的键盘选项卡中选中Use option as meta key
,那么前向和后向字的默认emacs样式命令和⌥F
( Alt + F )和⌥B
( Alt + B )。
我建议阅读From Bash to Z-Shell。如果你想提高你的bash / zsh实力!
答案 8 :(得分:14)
如果您恰好是Vim用户,可以试试bash的vim模式。运行此文件或将其放在~/.bashrc
文件中:
set -o vi
默认情况下,您处于插入模式;点击逃生,你可以像普通模式的Vim一样四处移动,所以按字词移动w
或b
以及usual movement keys also work。
答案 9 :(得分:12)
从Mac OS X Lion 10.7开始,终端映射选项 - 左/右箭头到 Esc - b / f < / kbd>默认情况下,现在这个内置于bash和其他使用这些emacs兼容键绑定的程序。
答案 10 :(得分:8)
在Bash中,这些绑定到 Esc - B 和 Esc - F 。
Bash有很多很多键盘快捷键;看看bind -p
的输出,看看它们是什么。
答案 11 :(得分:3)
按住Option键并单击光标要移动的位置
答案 12 :(得分:2)
在iterm2
的“首选项”>“个人资料”>“键” 下,单击“键映射” 下面的+
,并记录一个新的快捷方式。对于动作,选择Send Escape Sequence
,然后分别向后和向前输入b
或f
。
当我尝试为( Ctrl + ←)录制一个时,我在键盘快捷键字段中注意到箭头从未出现。事实证明,我必须先禁用默认Mac的“系统偏好设置”>“键盘”>“快捷方式”>“任务控制” ,才能使一切正常运行,因为它们将覆盖iterm2的默认快捷方式。对于标准终端应用程序也应如此。
答案 13 :(得分:0)
使用自然文本编辑预设!
从本质上讲,它与其他键序列绑定,例如Option + LeftArrow绑定到^[b
序列和Option + RightArrow绑定到^[f
这适用于fish和bash以及psql终端。
答案 14 :(得分:0)
如前所述,您可以在set -o vi
中添加~/.bashrc
以使用vi
/ vim
键绑定,也可以在{{1}中添加以下部分},以.bashrc
和方向键移动:
Ctrl
要开始执行这些代码行,请# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'
或开始新的终端会话。
P.S。如果要添加到source ~/.bashrc
或~/.bash_profile
,请不要忘记用已修改的文件替换~/.profile
的所有实例。
答案 15 :(得分:0)
iTerm2 Build 3.3.4用户的新答案:
步骤1:(macOS X)“系统偏好设置”>“键盘”>“快捷方式”选项卡>选择“任务控制”(左侧面板)>取消选中标记为“向左移动空间”和“向右移动空间”的快捷方式
第2步:(iTerm2 Build 3.3.4)首选项>配置文件>选择*默认(左面板)>按键选项卡>删除“⌥->”和“⌥<-”条目>设置“左选项(⌥ )键:”和“右键(⌥)键:”移至Esc +
不会弄乱外壳配置文件,不会弄乱劣质masOS(默认)终端,不会尴尬的Esc + F / B,冲洗并重复无意义。
完成交易!!!
喜欢这个技巧,我的程序员!
答案 16 :(得分:0)