是否可以在 tmux 中创建类似自定义缓冲区的功能?

是否可以在 tmux 中创建类似自定义缓冲区的功能?

我正在寻找可以快速让我从命令列表中选择一个命令并将其粘贴到命令行的功能。tmux prefix+= 提供了一个缓冲区,我可以从中选择并选择复制的项目,但是我正在寻找类似的方法来操作静态命令列表并根据需要粘贴。

测试用例:进入 tmux 后,使用快捷方式打开命令列表(类似于 tmux 缓冲区),选择命令,按 Enter 键将其粘贴到命令行中

答案1

这在常规 tmux 中是无法实现的,但幸运的是,有一个 mod 可以实现这一点http://ershov.github.io/tmux/(我是作者)。

此外,它还增加了成熟的脚本支持,允许多个“模式”命令绑定、变量、循环等。

有一个例子可以做与你需要的类似的事情https://github.com/ershov/tmux/blob/master/example_tcl_tmux.tcl

bind H tcl {
    if {[f #{pane_current_command}] eq "bash"} {
        choose-from-list -onselect {
            send-keys $_
        } -- {*}[
            lcomp {$x} for x in [
                split [read_file ~/.bash_history] "\n"
            ] if {[string range $x 0 0] ne "#"}
        ]
        end-of-list
        up
    } else {
        print "Bash?"
    }
}

这个绑定的作用是:

  1. 读取 .bash_history 并从中制作选择列表
  2. 一旦选定,就将字符串发送到 bash

相关内容