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


17

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

有捷径可让您直接跳到那里吗?

我正在使用Mac,因此Home无法选择


2
如果您使用的是Apple笔记本电脑,则Fn +左/右等同于Home / End。(并且相关地,Fn +向上/向下是PageUp / Down。)
duskwuff -inactive-

2
对于那些阅读此问题的人来说,这实际上是在询问shell,更具体地说是在shell中进行命令行编辑。之前的Ctrl-A答案是bash(最有可能),默认情况下是Emacs样式编辑。
Rich Homolka 2014年

4
如果只需要添加一个替代方法sudo是键入sudo !!。在!!获取与以前的命令替换。
马修·克鲁姆利

Answers:


29

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


1
大!这在Mac上也完美地工作!
clami219 2014年

1
这也适用于许多代码编辑器。
Jwosty

2
@ clami219:它实际上可以在OSX的大多数文本上下文中使用。Emacs绑定是一件了不起的事情……
tommyo 2014年

谢谢,它也可以在Linux上运行。
Gideon Babu

10

这取决于所讨论的外壳。

某些外壳程序(例如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中。

大多数现代外壳程序都支持emacsvi模式。(这两种模式都需要tty才能起作用。)

在许多Shell中,您可以自定义键绑定;通常用于该emacs模式,尽管某些外壳也允许自定义该vi模式的键绑定。如果您希望将其绑定到某个键,则首先需要弄清楚它产生的键序列(例如,在我的系统上,Alt-CursorLeft产生Esc+[+1+;+3+D^[[1;3D; ^Xis 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上运行,键入密钥并查看,就可以找出密钥生成的字符。然后按^CCtrl-C)中止cat


我喜欢使用Unix终端字符^ D结束cat。在我看来,它是^ D,因为文本流已“完成”。
亚伦·霍尔

@AaronHall:如果线路上已经有东西,那将不起作用。另外,我们想中止它,而不是结束它;-)但是,是的,在通常情况下,您是对的。但这是特例。
mirabilos 2014年

终端也可以进行行编辑。
塞缪尔·埃德温·沃德

@mirabilos要发送不带换行符的EOF,只需执行^ D ^ D(即按两次D)。
Potatoswatter

@Potatoswatter是的(好玩,我自己不认识我),但是我特别想在这里中止。发送时,^D^D我仍然收到“垃圾”的回声…
mirabilos

2

您是否尝试过Home键?我使用MobXterm连接到linux盒,并使用键盘上的Home和End键转到命令的第一个或最后一个字符。


你是对的!我必须指定我使用的是Mac ...
clami219

2

如果已切换到vi模式,则使用set -o vi,您可以点击EscIA在行的开头或结尾输入文本。或者,如果您只是想移动光标,则为^$


vi模式是什么shell?
大卫·里奇比

2

在emacs模式下(由切换:)set -o emacs是按:

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

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

  • 0/ ^$(它将保持命令模式)
  • IA(它将切换到编辑模式)

也可以看看:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.