输入 bash 命令,我已经到了第三行。但是我如何返回到开头来编辑我错过的内容呢?

输入 bash 命令,我已经到了第三行。但是我如何返回到开头来编辑我错过的内容呢?

我正在输入该命令,而我的光标位于末尾“高级警告”

$ git commit -m "Nettoyage :
>     - Suppression de sources ou projets inutiles
>     - Corrections mineures sur les sources pour supprimer des warnings"

是时候我意识到我应该写了“Nettoyage (deuxième party)”在我的提交消息的开头。

...但是,在我的命令的最后一行,我如何可以转到它的开头,在它的第一行编辑它?

答案1

不幸的是,Bash 中的命令输入是面向行的,输入多行命令时无法返回到上一行。

但是,您可以做的是使用到目前为止输入的完整命令启动编辑器。为此,在 Emacs 模式(默认)下,按CtrlxCtrle;在 vi 模式下,按Escv。这将打开您的编辑器,其中包含您迄今为止输入的所有内容;解决需要解决的问题,完成命令,退出编辑器,Bash 将运行编辑后的命令。

在这种特殊情况下,您可以对整个git提交消息使用编辑器:省略该-m选项,git将为您启动一个编辑器。

答案2

CtrlC,然后按Up,然后重新编辑命令,然后按Enter

# git commit -m "Nettoyage :
>      - Suppression de sources ou projets inutiles
>      - Corrections mineures sur les sources pour supprimer des warnings
>      - Autre chose^C

通过按CtrlC该行的末尾,我会丢失该行,但只需按一下Up键,我就会返回:

# git commit -m "Nettoyage :
     - Suppression de sources ou projets inutiles
     - Corrections mineures sur les sources pour supprimer des warnings

我的光标放在“ings”后面。然后,我可以使用Leftand来回导航所有三行文本,使用orRight导航到命令的开头,使用or导航到命令的结尾,等等。HomeCtrlAEndCtrlE

据我所知,我没有使用任何奇特的阅读线设置。似乎是 FreeBSD 13.0 上 Bash 5.1.16 的标准行为。

答案3

你不知道。或者据我所知,我希望其他人能发表答案并证明我错了!到目前为止,我发现的最好的事情是点击Enter移动到新行(如果没有这个,在我的系统上,您不会在后面的步骤中返回完整的命令,而只能返回最后一个换行符输入之前的部分)并且然后Ctrl+D中止命令:

$ git commit -m "Nettoyage :
>      - Suppression de sources ou projets inutiles
>      - Corrections mineures sur les sources pour supprimer des warnings

现在按Enter

$ git commit -m "Nettoyage :
>      - Suppression de sources ou projets inutiles
>      - Corrections mineures sur les sources pour supprimer des warnings
>

现在Ctrl+ D

$ git commit -m "Nettoyage :
>      - Suppression de sources ou projets inutiles
>      - Corrections mineures sur les sources pour supprimer des warnings
> bash: unexpected EOF while looking for matching `"'

您现在可以按(向上)返回到上一个命令并现在您将能够按预期编辑它:

$ git commit -m "Nettoyage :
     - Suppression de sources ou projets inutiles
     - Corrections mineures sur les sources pour supprimer des warnings

并不完美,但它可能可以作为一种解决方法。

答案4

作为按字面输入多行字符串的替代方法,您可以使用 Bash反斜杠转义扩展字符串, 喜欢

git commit -m $'Nettoyage :\n     - Suppression de sources ou projets inutiles\n     - Corrections mineures sur les sources pour supprimer des warnings'

这可让您将多行字符串展平为一行,并用来\n表示换行符。生成的命令将在字符串中包含真正的换行符。

相关内容