将现有的提示命令行分成几行


8

我知道我可以\ enterbash命令行末尾键入以在另一行中继续该命令。但是,如何将一个已经完全键入的提示命令行分成两个?

例如,如何才能在then不切掉其余部分并重新键入之前立即中断此行?

$ if true; then ls; fi

1
如果您处于交互式命令行提示符下,除了使您的shell历史记录看起来更漂亮之外,还有其他特殊原因需要这样做吗?从功能上讲,多余的换行符对外壳没有影响。如果要输入很长的复杂外壳代码段,最好使用编辑器。fc还要查看该命令-几乎所有外壳程序都提供该命令。
jw013 2013年

不漂亮,只是使复杂的命令可读。
2013年

Answers:


4

换行符字符是LF(换行),又名控制-J。如果按Ctrl+ J,将执行accept-lineReturn键相同的命令。要插入文字LF字符,请按Ctrl+ V Ctrl+ J。命令Ctrl+ Vquoted-insert)逐字插入下一个字符。因此,要分割一条线,您可以输入 \ Ctrl+ V

如果您经常这样做,可以将其设为宏:

bind '"\e\C-j": "\\\C-v\C-j\C-b\C-b"'

6

您可以使用edit-and-execute-command,通常被映射到Ctrl+ x+ e,以在编辑器中打开当前的命令。退出编辑器时,将运行命令。


1
很好-从来都不知道。你需要确保你的$ EDITOR环境变量设置为东西-我添加vim到我的,像这样:export EDITOR=vim
slm

1
如何在编辑器退出时取消命令的执行?我使用:q!ZQ但无济于事。
Birei

1
@Birei:删除所有行,然后保存并退出(例如ggdG:wq:%d|wq,等等)。该命令将保留在历史记录中(如果您从较早的条目中调用过,则可能会重复),但不会执行。
暂停,直到另行通知。

@DennisWilliamson:哇!将近三年后,我还没有解决这个问题,非常感谢,因为解决方案是如此简单,而简单总是更好。
Birei '16

2

注意-此答案特定于vi和vim

set -o vi    # edit commands using vi
VISUAL=/usr/bin/vim

要编辑当前键入的行,请单击ESC(进入vi或进入vim命令模式),然后键入vvi

注意所有vi / vim编辑命令都可以使用。例如

  • ESC+ A 放在当前键入行的末尾。
  • ESC+ 0 将光标置于行的开头。

优秀的。这无疑使编辑命令行更加容易。但是您知道如何在不进入可视模式的情况下插入换行符吗?
2013年

2
谢谢。CTRL+ v然后CTRL+ j换行符应该起作用。
嫌疑犯
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.