在 macOS 上使用 bash 的终端键绑定

在 macOS 上使用 bash 的终端键绑定

我一直在尝试学习 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

相关内容