Tmux会话管理(自动补全)

来源:互联网 发布:啥叫大数据 编辑:程序博客网 时间:2024/06/05 06:11

之前在使用 Tmux 时,自己写一个脚步用于快速切换会话,但是苦于没有会话名补全功能,每次都需要先查看会话名,然后才能进行切换,用起来十分麻烦,于是想实现 Shell 的自动补全功能,这样就可以不用去记会话名了。

Programmable Completion

在网上查找一番,发现 Linux 下有个 Programmable Completion 这个功能可以实现,于是尝试了一下果然可以,实现起来也很简单。假设我有一个程序 auto_comp ,我想为它添加自动补全,他包含的选项为: -a -b -c --appen --backup --compare。其自动补全的实现如下:

  1. 新建 auto_comp.sh,内容如下:

    # file: auto_comp.sh# 为 auto_comp 程序实现自动补全功能_auto_comp(){    local cur    COMPREPLY=() # 用于存放可能的补全结果    cur=${COMP_WORDS[COMP_CWORD]}    COMPREPLY=( $(compgen -W '-a -b -c --appen --backup --compare' -- $cur) )    return 0}complete -F _auto_comp ./auto_comp
  2. 在当前路径下新建 auto_comp 的可执行文件;

  3. 执行source auto_comp.sh命令;

完成上述步骤之后,auto_comp 程序便能在输入 Tab 后给出选项提示。

Tmux 会话补全

之前为了便于管理Tmux的会话,我写了个简单的脚本 stmux 用于创建或者连接到已有的会话,使用比较简单。

usage:stmux [session_name]1. 当 stmux 后没有指定会话名且当前没有 Tmux 会话时,stmux 将创建一个新的会话。2. 当 stmux 后没有指定会话名但当前有 Tmux 会话时,stmux 将连接到第一 Tmux 会话。3. 当 stmux 后指定会话名时,stmux 将连接到指定的会话。

由于 Tmux 会话名是不确定的且可以随时发生变化,因此我们需要动态获取 Tmux 的会话信息,好在 Tmux 提供了该功能。补全的脚本如下所示。

_stmux_autocomplete (){    local cur    COMPREPLY=()    cur=${COMP_WORDS[COMP_CWORD]}    opts=$(tmux ls -F "#{session_name}" 2>/dev/null)    COMPREPLY=( $(compgen -W "$opts" -- $cur) )    return 0}complete -F _stmux_autocomplete stmux

更多的配置可以参考我的 Tmux 配置

0 0
原创粉丝点击