blu*_*e10 3 keyboard-shortcuts zsh ranger zle
这是这个问题的后续:我正在尝试为终端文件管理器ranger创建一个键盘快捷键,以便通过一次按键从 zsh 提示跳转到文件管理器。我正在关注链接的答案,将其添加到我的.zshrc:
run_ranger () { echo; ranger; zle redisplay }
zle -N run_ranger
bindkey '^f' run_ranger
Run Code Online (Sandbox Code Playgroud)
键绑定本身有效,但是 ranger 无法以Error: Must run ranger from terminal. 我查看了Ranger 代码 (Python),它执行常见检查sys.stdin.isatty()以验证是否具有 TTY 标准输入。如何修改 zle 小部件以便正确设置标准输入?
@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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |