Linux 中的自定义命令行编辑器

Custom command line editor in Linux

我想在按下 Alt+Enter 时在 bashzsh 中调用我自己的命令行编辑器。它应该进行一些编辑并将结果提交给 Enter 上的 shell。所以基本上我的编辑器采用当前命令行内容和 returns 修改后的内容。任何想法如何处理集成?我确实知道如何使用 ANSI 终端,只是想知道如何以这种方式将我的编辑器控制台应用程序集成到 shell。

对于Bash:

有一个 Readline 命令可以在编辑器中打开当前命令,edit-and-execute-command。默认情况下,它绑定到 C-x C-e,并在 $VISUAL$EDITOR 或 Emacs 中打开命令。

您可以通过将 $VISUAL 导出到环境中来为您的编辑器设置 $VISUAL,例如 ~/.bashrc:

export VISUAL=youreditor

并将其绑定到 Alt+Enter

bind '"\e\C-m": edit-and-execute-command'

在命令行上,或

"\e\C-m": edit-and-execute-command

~/.inputrc.

zsh 几乎相同:

  export VISUAL=youreditor
  autoload -Uz edit-command-line
  zle -N edit-command-line
  bindkey '\e\C-m' edit-command-line