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

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

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

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

我用的是 Mac,所以Home没得选

答案1

Ctrl+A应该可以工作。Ctrl+E对应于命令行的末尾。

答案2

这取决于所讨论的 shell。

一些 shell(例如 AT&T ksh88)实际上不提供输入行编辑。

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

vi模式编辑最近已被 POSIX 标准强制要求。

更为常见 emacs模式编辑(感谢上帝,它与 Emacs 编辑器/操作系统无关)用于Ctrl-A跳转到行首和Ctrl-E跳转到行尾。此模式要求您set -o emacs在许多 shell 上运行(最突出的是 AT&T ksh93),但默认情况下在韓國和 GNU bash。

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

在许多 shell 中,您可以自定义键绑定;通常针对模式emacs,尽管有些 shell 也允许自定义vi模式的键绑定。如果您希望将其绑定到某个键,则首先需要找出它产生的键序列(例如,在我的系统上,Alt-CursorLeft产生Esc+[+1+;+3+D^[[1;3D^XCtrl-X^[Esc),因此我可以输入类似

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'

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

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

答案3

你试过 Home 键吗?我使用 MobXterm 连接到 Linux 框,并使用键盘上的 Home 和 End 键转到命令的第一个或最后一个字符。

答案4

在 emacs 模式(通过 切换set -o emacs:)下按:

  • Ctrl+ACtrl+E
  • HomeEnd
  • Esc+bEsc+f(将光标在当前单词处向前和向后移动)

在 vi 模式(通过:切换set -o vi)下,在命令模式(Esc)下按:

  • 0/^$(它将保持在命令模式)
  • I并且A(它将切换到编辑模式)

也可以看看:

相关内容