[20240731]tmux配置使用问题.txt

2024年 8月 1日 26.4k 0

[20240731]tmux配置使用问题.txt

--//我以前配置tmux使用的配置文件存在如下内容:

# splitting panes with | and -

bind | split-window -h

bind - split-window -v

--//原始内容来自:Pragmatic.Bookshelf.tmux.2.Productive.Mouse-Free.Development.1680502212.pdf

--//使用该命令非常形象,按prefix | 可以垂直建立新的pane。按prefix - 可以水平建立新的pane。

# grep splitw /etc/tmux.conf | grep -v ^#

bind-key -n c-x splitw -v

bind-key - splitw -v

bind-key -n c-y splitw -h

bind-key | splitw -h

--//splitw 是 split-window的简写格式。

# tmux list-keys | grep "split-window -[hv]"

bind-key    -T prefix       |                    split-window -h

bind-key    -T root         C-x                  split-window -v

bind-key    -T root         C-y                  split-window -h

....

--//可以发现并没有出现按prefix - 可以水平建立新的pane的定义。可以我明明写在配置文件里面了。

--//尝试手工执行如下:

# tmux bind - split-window -v

# tmux list-keys | grep "split-window -[hv]"

bind-key    -T prefix       -                    split-window -v

bind-key    -T prefix       |                    split-window -h

bind-key    -T root         C-x                  split-window -v

bind-key    -T root         C-y                  split-window -h

--//说明手工执行没有任何问题的,为什么写在配置不行呢?

--//退出tmux,重新启动tmux,再检查-的bind,发现:

# tmux list-keys -

bind-key -r -T prefix - resize-pane -D 5

--//实际上发现在配置脚本有定义- 为resize-pane -D 5,覆盖了前面的配置,存在冲突。

--//当我前面手工执行时又覆盖前面的定义,导致我判断错误,最终我修改配置使用_代替-。

# egrep "splitw|split-window" /etc/tmux.conf | grep -v ^#

bind-key -n c-x splitw -v

bind-key _ splitw -v

bind-key -n c-y splitw -h

bind-key | splitw -h

# tmux list-keys | grep "split-window -[hv]"

bind-key    -T prefix       _                    split-window -v

bind-key    -T prefix       |                    split-window -h

bind-key    -T root         C-x                  split-window -v

bind-key    -T root         C-y                  split-window -h

--//两个字符|_,都需要按shift键操作,也很好记忆。

--//另外调试时注意tmux的工作模式是client-server模式,如果1个session定义了参数,新建立的session会继承前面的定义。

--//通过例子说明,假设一个tmux:

# tmux ls

no server running on /tmp/tmux-0/default

--//开始没有session

--//启动1个session:

# tmux

--//定义 prefix - split-window -v。

# tmux bind - split-window -v

--//退出tmux,按prefix d

--//再启动1个session:

# tmux

# egrep "splitw|split-window" /etc/tmux.conf | grep -v ^#

bind-key -n c-x splitw -v

bind-key _ splitw -v

bind-key -n c-y splitw -h

bind-key | splitw -h

--//可以发现配置里面并没有prefix - 的定义,而实际上存在的也可以正常使用。

# tmux list-keys -

bind-key -T prefix - split-window -v

--//前面已经定义了prefix - ,导致新打开的会话继承了新的定义,我也是在调试时遇到的困惑。

--//实际上这类问题以前遇到过。

# tmux ls

0: 1 windows (created Wed Jul 31 11:52:24 2024)

1: 1 windows (created Wed Jul 31 11:54:29 2024) (attached)

--//可以发现实际上打开了两个session。

--//通过查询进程也可以发现这些细节信息。

#  ps axjf

...

      1   63312   63312   63312 ?             -1 Ss       0   0:00 tmux

  63312   63313   63313   63313 pts/1      63313 Ss+      0   0:00  \_ -bash

  63312   63396   63396   63396 pts/2      64583 Ss       0   0:00  \_ -bash

  63396   64583   64583   63396 pts/2      64583 R+       0   0:00      \_ ps axjf

# pstree -p

..

          |-tmux: server(63312)-+-bash(63313)

          |                     `-bash(63396)---pstree(64638)

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论