当在* nix命令行中写一个长命令并且必须返回到第一个字符时,为了在开头添加一些内容(例如a nohup
,当您意识到该过程将是一个长命令,或a sudo
,当您意识到您需要root权限)游标可能需要很长时间才能回到第一个字符...
有捷径可让您直接跳到那里吗?
我正在使用Mac,因此Home无法选择
sudo
是键入sudo !!
。在!!
获取与以前的命令替换。
当在* nix命令行中写一个长命令并且必须返回到第一个字符时,为了在开头添加一些内容(例如a nohup
,当您意识到该过程将是一个长命令,或a sudo
,当您意识到您需要root权限)游标可能需要很长时间才能回到第一个字符...
有捷径可让您直接跳到那里吗?
我正在使用Mac,因此Home无法选择
sudo
是键入sudo !!
。在!!
获取与以前的命令替换。
Answers:
Ctrl+A应该管用。Ctrl+E对应于命令行的末尾。
这取决于所讨论的外壳。
某些外壳程序(例如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中。
大多数现代外壳程序都支持emacs
和vi
模式。(这两种模式都需要tty才能起作用。)
在许多Shell中,您可以自定义键绑定;通常用于该emacs
模式,尽管某些外壳也允许自定义该vi
模式的键绑定。如果您希望将其绑定到某个键,则首先需要弄清楚它产生的键序列(例如,在我的系统上,Alt-CursorLeft产生Esc+[+1+;+3+D(^[[1;3D
; ^X
is Ctrl-X和^[
is Esc),所以我可以输入类似
bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'
并将根据外壳更改此绑定。通常,您可以将它们保存在启动文件(~/.mkshrc
,~/.kshrc
)中,或者对于GNU bash,保存在中~/.inputrc
。请注意,并非所有shell都支持bindind所有版本中的所有键。
通常,您只需cat
在shell上运行,键入密钥并查看,就可以找出密钥生成的字符。然后按^C
(Ctrl-C)中止cat
。
^D^D
我仍然收到“垃圾”的回声…
在emacs模式下(由切换:)set -o emacs
是按:
在vi模式下(通过:切换set -o vi
),在命令模式下(Esc),通过按:
也可以看看: