当在 *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 都支持emacs
和vi
模式。(这两种模式都需要 tty 才能工作。)
在许多 shell 中,您可以自定义键绑定;通常针对模式emacs
,尽管有些 shell 也允许自定义vi
模式的键绑定。如果您希望将其绑定到某个键,则首先需要找出它产生的键序列(例如,在我的系统上,Alt-CursorLeft产生Esc+[+1+;+3+D(^[[1;3D
;^X
是Ctrl-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+A和Ctrl+E
- Home和End
- Esc+b和Esc+f(将光标在当前单词处向前和向后移动)
在 vi 模式(通过:切换set -o vi
)下,在命令模式(Esc)下按:
- 0/^和$(它将保持在命令模式)
- I并且A(它将切换到编辑模式)
也可以看看: