
フォローアップです。この問題:ターミナルファイルマネージャのキーボードショートカットを作成しようとしています。森林単一のキーストロークでzshプロンプトからファイルマネージャに移動します。私はリンクされた答えに従い、それを私の答えに追加しています.zshrc
。
run_ranger () { echo; ranger; zle redisplay }
zle -N run_ranger
bindkey '^f' run_ranger
キーバインディング自体は機能しますが、Rangerは実行されませんError: Must run ranger from terminal
。私は見ましたレンジャーコード(Python)sys.stdin.isatty()
標準入力にTTYがあるかどうかを確認するために一般的な検査を行います。 stdinが正しく設定されるようにzleウィジェットをどのように変更しますか?
答え1
@lluaのコメントは実際にstdin問題を解決するためのヒントです。ありがとうございます!
私のユースケースでは、リンクされた問題から別の偏差が必要です。私は作業ディレクトリを変更するためにRangerを使用しています。このトリック)。この場合、プロンプトは正しい変更zle redisplay
(zle reset-prompt
この質問を見ました。)。完全な解決策は次のとおりです。
run_ranger () {
echo
ranger --choosedir=$HOME/.rangerdir < $TTY
LASTDIR=`cat $HOME/.rangerdir`
cd "$LASTDIR"
zle reset-prompt
}
zle -N run_ranger
bindkey '^f' run_ranger
答え2
これは誰にも当てはまるわけではありません。しかし、私はを使用しており、tmux
次のことを行います。
tmux send-keys "ranger" Enter
tmux
単語を送信したranger
後、を押すために使用されますEnter
。私はそれが醜いことを知っていますが、動作します。