如何跳回*nix命令行中的第一个字符?

cla*_*219 18 linux unix keyboard-shortcuts command-line cursor

当在 *nix 命令行中编写一个长命令并且必须返回到第一个字符时,为了在开头添加一些东西(例如 a nohup,当您意识到该过程将是一个很长的过程时,或者 a sudo,当您意识到您需要 root 权限)光标可能需要很长时间才能返回到第一个字符...

有没有捷径可以让你直接跳到那里?

我使用的是 mac,所以Home不是一个选项

cho*_*oba 31

Ctrl+A应该管用。Ctrl+E对应于命令行的末尾。

  • @clami219:它实际上适用于 OSX 中的大多数文本上下文。Emacs 绑定是一件很棒的事情...... (2认同)

mir*_*los 10

这取决于所讨论的外壳。

一些 shell(如 AT&T ksh88)几乎不提供输入行编辑。

在执行vi模式编辑的shell 中(您可能必须使用 启用此功能set -o vi),这是通过按Esc(从插入模式切换)然后0跳转到行首或$跳转到行尾来完成的。然后通过按下重新进入插入模式i– 光标将停留在原处 – 或者a– 光标将向右移动一个以附加文本。

vi POSIX 标准最近强制要求进行模式编辑。

更常见的 emacs模式编辑(感谢上帝,它有什么用Emacs编辑器斜杠操作系统做)使用Ctrl-A跳转到行的开头,并Ctrl-E跳转到该行的末尾。此模式要求您set -o emacs在许多 shell上运行(最突出的是 AT&T ksh93),但在mksh和 GNU bash 中默认启用。

大多数现代 shell 都支持emacsvi模式。(这两种模式都需要 tty 才能工作。)

在许多 shell 中,您可以自定义键绑定;通常用于emacs模式,尽管某些 shell 也允许自定义vi模式的键绑定。如果您有一个希望绑定到的键,您首先需要弄清楚它产生的键序列(例如,在我的系统上,Alt-CursorLeft产生Esc+[+1+;+3+D( ^[[1;3D; ^XisCtrl-X^[is Esc),所以我可以输入类似

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'
Run Code Online (Sandbox Code Playgroud)

并将更改此键绑定,具体取决于外壳。您通常可以将它们保存在启动文件 ( ~/.mkshrc, ~/.kshrc) 中,或者对于 GNU bash,保存在~/.inputrc. 请注意,并非所有 shell 都支持在所有版本中绑定所有键。

您通常可以通过cat在 shell 上运行、键入密钥并观察来找出密钥生成的字符。然后按^C( Ctrl-C) 中止cat