ZSH Bindkey 运行命令并按 Enter 键

ZSH Bindkey 运行命令并按 Enter 键

我希望有一个可以为我执行命令的绑定键。在当前状态下,当我点击Ctrl + f终端时,我会看到该命令,并且必须按 Enter 键。我希望也许按键绑定能为我做到这一点。我目前有

bindkey -s ^f "tmux-sessionizer\n"

我是否卡住了,无法按回车键,或者我可以做些什么?

答案1

如果您在空提示符下按 Ctrl+F (至少在默认配置中),您发布的代码确实会运行tmux-sessionizer(至少在默认配置中 - 实际上您可能有非常有用的extended_glob选项集,这需要引用^,例如bindkey '^f' 'tmux-sessionizer\n')。但如果您在非空提示符下按下它,它通常不会做任何有用的事情,并且可能会做一些坏事。运行外部命令的更好方法是不使用 shell 输入,而是直接运行它。为了这:

  1. 定义一个功能这就是你想要的。
  2. 在函数的最后,告诉行编辑器重新显示提示
  3. 将函数注册为行编辑器小部件
  4. 绑定一个键到编辑器小部件。
function run-tmux-sessionizer { tmux-sessionizer; zle redisplay; }
zle -N run-tmux-sessionizer
bindkey '^f' run-tmux-sessionizer

答案2

你不能这样做独自bindkey指挥。但是,如果您安装我的zsh-edit插入,那么你可以使用这个:

bind '^F' 'tmux-sessionizer'

相关内容