![zshでコマンドラインを編集するために*のみ*を使用するようにエディタコマンドを設定するにはどうすればよいですか?](https://linux33.com/image/84575/zsh%E3%81%A7%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB*%E3%81%AE%E3%81%BF*%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F.png)
Ctrl+をxクリックすると、Ctrl+で現在のコマンドラインをe表示または編集できます。zsh
しかし、を使用してそこからシェル構文の構文強調を取得しようとしています。コマンドラインを編集するときにシェル構文が自動的に認識されないため、これを通過する必要があります(作成時に拡張を渡す必要はありません)。$EDITOR
$VISUAL
nano
-Y sh
nano
zsh
/tmp/random-name
.sh
nano
私は実行できる
EDITOR='nano -Y sh'
VISUAL="$EDITOR"
Ctrl次に+ x、Ctrl+を押して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誇張。
答え2
このzle
スクリプトはEDITOR
またはを使用しますVISUAL
。これを行う1つの方法は、隠された場所からカスタム関数ディレクトリにスクリプトをコピーし$fpath
、別の環境名を使用するようにスクリプトを編集し、zshがインストールされている関数ディレクトリの前にカスタム関数ディレクトリを呼び出すことです。
# in .zshrc, set something like
fpath=(~/.zsh/functions $fpath)
# then in the shell, something like
mkdir -p ~/.zsh/functions
cp /usr/share/zsh/*/functions/edit-command-line ~/.zsh/functions
次にファイルを編集し、edit-command-line
別の環境変数を指定します。