我已经映射了C-h
、C-j
、C-k
、C-m
组合键来在窗格之间切换,但是在使用 bash / zsh 时tmux.conf
真的很怀念退格键的组合键。C-h
我已经启用vi
模式~/.inputrc
并正在考虑映射C-h
到backward-delete-char
模式,并在模式下vi-insert
运行。tmux select-pane -L
vi-command
如何在vi-command
模式中添加映射以在后台运行命令tmux select-pane -L
,而不修改当前行及其光标位置?
答案1
猛击
这是可能的,但不是通过 inputrc 实现的。(此文件属于 Readline 库,尽管它主要以 Bash 而闻名,但它实际上是许多不同程序使用的通用文本输入库,并不真正处理特定于 shell 的事情,例如“运行命令”。)
相反,这是 Bash 本身提供的自定义操作(其他使用 Readline 的程序中不可用),并且必须使用 Bash 的bind
内置函数进行定义,具体来说,是以下-x
选项:
bind -m vi-command -x '"\C-h": tmux select-pane -L'
扎什
Zsh 的 ZLE 有所不同,因为它是特别是实际 zsh shell 的一部分,但它也没有直接的“执行命令”选项。相反,你必须定义一个自定义的 ZLE小部件,它只能调用一个 shell 函数,然后将其绑定到一个键。
定义一个运行该事物的函数。
tmux-go-left() { tmux select-pane -L; }
运行交互式程序时,必须重定向其 stdin
/dev/tty
(否则它将读取 EOF 并立即退出),并且zle -I
必须在程序退出时调用以“使”屏幕内容“无效”(否则光标将处于错误的位置)。例如:open-htop() { htop </dev/tty; zle -I; }
定义一个调用该函数的小部件。
zle -N tmux-go-left zle -N open-htop
如果没有提供函数名称,则假定它与小部件名称相同。
将一个键绑定到小部件。
bindkey -a '\C-h' tmux-go-left bindkey -v '\C-p' open-htop
看起来
-v
选择 Vi 插入模式;-a
选择 Vi 命令模式。
资料来源: