我一直在尝试学习 macOS 上 shell 的键盘快捷键,但是当我尝试使用ALT+时B,它不起作用。
如何在 shell 中发现、配置和使用键绑定?任何速查表都会有帮助。
答案1
解决 OS X 终端上“meta”键序列不起作用的一种方法是将特定字符序列分配给特定按键。对于使用非美国键盘的人来说,这通常是一个比其他答案评论中提到的“将选项用作元”设置更好的解决方案。(许多国际 Mac 键盘在没有 Option/alt 键的情况下基本上无法用于开发工作,因为某些关键字符不可用。#例如,英国 Mac 键盘上没有。)
为了让 word-left 和 word-right 在 bash 中工作,我使用了终端设置中的“键盘”部分。您可以告诉它在按下特定键时生成特定代码序列。我已经配置了alt+◀生成\033b
(实际上是两个字符:Esc,然后是小写字母 b)和alt+▶生成\033f
(即Esc f
)。这样您就可以使用箭头键并按住选项键来获取单词左移和右移行为。
我还没有弄清楚如何让这个Esc键起作用 - 理论上你应该能够将它用于“元”序列,但它似乎不起作用。(所以只需输入Esc+b就可以返回一个单词。)
如果您使用的是美式键盘布局,或者 Apple 认为可以提供您实际需要的所有按键的其他键盘,那么正如其他人所建议的,“使用选项作为元键”(也在终端设置的键盘部分)可能是更好的选择,因为您将能够使用任何元键组合。打开该选项后,Alt+b即可正常工作。
答案2
Mac OS X 的终端是 BASH,以下是一些 BASH 的快捷方式:
Ctrl + A Go to the beginning of the line you are currently typing on
Ctrl + E Go to the end of the line you are currently typing on
Ctrl + L Clears the Screen, similar to the clear command
Ctrl + U Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H Same as backspace
Ctrl + R Let’s you search through previously used commands
Ctrl + C Kill whatever you are running
Ctrl + D Exit the current shell
Ctrl + Z Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W Delete the word before the cursor
Ctrl + K Clear the line after the cursor
Ctrl + T Swap the last two characters before the cursor
Esc + T Swap the last two words before the cursor
Alt + F Move cursor forward one word on the current line
Alt + B Move cursor backward one word on the current line
Tab Auto-complete files and folder names
您要查找的是Ctrl+ H。(这与按退格键相同)
如果您要查找转义符以返回一个字符,则您要查找\b
。例如:
$ echo -e "one two\b\b\b\b three" # Will echo "one three"
答案3
在我的英国 Mac 上,ALT + 左/右光标可后退/前进一个单词。绝对必要。
答案4
你想要阅读线手册页部分bash(1)
:
man 1 bash
/^READLINE