【发布时间】:2015-06-14 23:41:32
【问题描述】:
请注意,我不是在谈论历史上的前几行。我说的是当前多行命令中的前几行。
例如,当我在 zsh 中键入多行命令时(_ 表示光标):
$ for i in {1..5}; do
for> echo i_
此时我可能会改变主意,想让i 循环通过{1..10},所以我需要回到上一行。但是,我无法弄清楚如何做到这一点,如⌫、←、或C-b,或者我能想到的所有内容都在第二行的开头停止。那么,到底有没有可能搬回来呢?提前致谢。
其实这不限于zsh。例如,我也从未在 bash 中解决过这个问题。
我已经花了相当长的时间在谷歌上搜索,但没有任何发现,所以如果这很明显,请原谅我并责怪我的 Google-fu。
供您参考,我使用的是 Emacs 键绑定,并且
$ bindkey | grep delete
"^D" delete-char-or-list
"^H" backward-delete-char
"^[[3~" delete-char
"^?" backward-delete-char
不确定这是否会有所帮助。
【问题讨论】:
-
我认为这至少在
bash中是不可能的,但不确定zsh。问题是一旦你在输入第一行后点击Enter,bash会记住该行但不再接受来自该行的输入。 -
如果你想经常编辑多行命令而不把它们放入shell脚本,至少在
bash,如果你是vi模式,你可以输入v打开路径存储在$VISUAL中的编辑器。我不确定 emacs 键绑定的等效项。 -
@merlin2011 感谢您的信息。我对
vi不是很熟悉,请您解释一下“输入v打开编辑器...”吗?我的意思是,我究竟要输入什么来打开编辑器(肯定不是一个v,是吗)? -
我会写这个作为答案,不是因为它解决了你的问题,而是因为我需要多行。
-
对于那些投票接近的人:这个问题是关于编程的,至少是切线的。此外,还有大量关于 SO 的命令行编辑问题;如果您坚持,最好先关闭它们。
标签: shell command-line zsh