我正在输入该命令,而我的光标位于末尾“高级警告”
$ 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
表示换行符。生成的命令将在字符串中包含真正的换行符。