Zsh
如何將 zsh 中的鍵盤快捷鍵綁定到需要標準輸入的程序?
這是這個問題的後續:我正在嘗試為終端文件管理器ranger創建一個鍵盤快捷鍵,以便通過一次擊鍵從 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 標準輸入。如何修改 zle 小元件以便正確設置標準輸入?
@llua 的評論確實是解決標準輸入問題的訣竅,謝謝!
我的案例需要與連結問題的另一個偏差。我正在使用 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