zshでコマンドラインを編集するために*のみ*を使用するようにエディタコマンドを設定するにはどうすればよいですか?

zshでコマンドラインを編集するために*のみ*を使用するようにエディタコマンドを設定するにはどうすればよいですか?

Ctrl+をxクリックすると、Ctrl+で現在のコマンドラインをe表示または編集できます。zshしかし、を使用してそこからシェル構文の構文強調を取得しようとしています。コマンドラインを編集するときにシェル構文が自動的に認識されないため、これを通過する必要があります(作成時に拡張を渡す必要はありません)。$EDITOR$VISUALnano-Y shnanozsh/tmp/random-name.shnano

私は実行できる

EDITOR='nano -Y sh'
VISUAL="$EDITOR"

Ctrl次に+ xCtrl+を押してe目的の結果を得ます。ただし、他のプログラムでも$EDITOR/を使用してください$VISUAL$EDITOR/を上記のように設定してから$VISUAL実行すると(たとえば)、git commitコミットメッセージがシェル構文で強調表示されます。これは私が避けたいものです。

私も試しました

EDITOR='nano -Y sh' fc

どのした動作しますが、各入力は少し冗長に見えます(関数に入れることもできます)。また、fcコマンドラインは次のように事前入力されます。最終的な歴史コマンドラインを使用するには、コマンドを入力する必要があります。これは、長いコマンドを入力してzshからnanoキーボードショートカットを使用して編集することを決定できないことを意味します。

zshそれでは、編集者/フラグに使用するように指示する方法はありますか?ただCtrl+を押してコマンドラインを編集すると、x他のプログラムはCtrl+を無視しますか?設定してから忘れられる環境変数がe必要です。~/.zshrc

ベストアンサー1

すべてのコンピュータの問題を解決する一般的なアプローチは、間接レベルを追加することです。

を呼び出す代わりに、edit-command-lineラッパー関数が呼び出されます。

nano-command-line () {
  local VISUAL='nano -Y sh'
  edit-command-line
}
zle -N nano-command-line
bindkey '^X^E' nano-command-line

1誇張。

おすすめ記事