将管道终端命令发送到 Gedit 进行进一步编辑

将管道终端命令发送到 Gedit 进行进一步编辑

我的终端窗口中有一个复杂的命令,我想进一步编辑它,例如

echo "This is a complex command I want to edit in an editor"

我怎样才能将这一行代码(不是输出而是实际代码)传输到 Gedit 等进行进一步编辑?类似于此解决方案,仅适用于基于 GUI 的编辑器:http://www.commandlinefu.com/commands/view/1446/rapidly-invoke-an-editor-to-wri‌​te-a-long-complex-or-tricky-command

请注意,我正在寻找一种在外部编辑器中进行编辑的方法。

答案1

bashzshksh(包括其派生命令)都有这个非常简洁的内置命令,它会打开一个编辑器来修改你之前的命令。如果未设置fc变量,默认情况下它会调用 中设置的编辑器;如果未设置变量,默认情况下它会调用。FCEDITEDITOREDITORnano

您可以做的是设置FCEDIT=/usr/bin/gedit。现在有一个技巧:您运行一个长命令,决定要更改它,因此在运行它之后立即调用fc。这将生成gedit一个窗口,其中的命令随时可供更改。完成更改后,像平常一样保存并退出。

缺点?它会在终端中留下一串不必要的 gtk 消息。就我个人而言,我使用vimnano命令行编辑器而不是 gedit - 它们不会留下任何痕迹,而且它们TTY不仅可以在 GUI 环境中使用。我强烈建议您切换到,nano因为它是最简单的命令行文本编辑器之一。

补充说明bash,你可以用命令行做同样的事情您当前正在编辑使用ctrl+ X+Ectrl+ X- ctrl+ E;你可以在zsh添加到你的.zshrc

autoload -z edit-command-line
zle -N edit-command-line
bindkey '^XE' edit-command-line # binds CTRL+X+E
bindkey "^X^E" edit-command-line # binds CTRL+X - CTRL+E

答案2

使用gedit -。这样它将从 stdin 读取,因此您可以使用

echo 'echo "complex command"'|gedit -

或者简单地

gedit - <<< 'echo "complex command"'

这样您就不需要创建单独的 tmpfile。

答案3

通过此命令您可以实现: echo "This is a complex command" > tempfile | gedit tempfile

编辑:

据我了解,您想要类似这样的内容: echo echo "This is a complex command" > tempfile | gedit tempfile。例如,echo ls -d > tempfile | gedit tempfile将使用以下文本打开一个 gedit 文件:“ls -d”。

话虽如此,我还是建议不要在 Gedit 上编辑命令。Linux 终端非常强大(我们有强大的制表符补全功能)。

相关内容