Tmux 类似浏览器的窗口移动?

问题描述 投票:0回答:1

我的目标:绑定Ctrl+Shift+PgUp[PgDn]键,在TMUX中将当前窗口的索引增加[减少]1。以实现类似于浏览器中选项卡移动的行为。看起来是一个简单的问题,也许我把事情复杂化了。

问题

swap-window
命令没有
-F
标志选项,因此它无法识别tmux格式(表达式)

我已经尝试过:

user@host ~> # my current window index is 1
user@host ~> tmux display -p '#I'
1
user@host ~> tmux set -F @next_window '#{e|+|:#I,1}'
user@host ~> tmux display -p '#{@next_window}'
2

我想在这里使用两件事:

  1. 来自 tmux 的 手册页

    某些命令接受带有格式参数的 -F 标志。这是一个控制命令输出格式的字符串。格式变量包含在“#{”和“}”中,例如“#{session_name}”。下表列出了可能的变量,或者可以使用 tmux 选项的名称作为选项的值。有些变量有更短的别名,例如“#S”; ‘##’被单个‘#’替代,‘#’被‘,’替代,‘#}’被‘}’替代。

  2. tmux 的 wiki 关于表达式。例如。以您所做的格式从 10 减去 5

    #{e|-|:10,5}

假设我们只需将以下内容添加到 tmux.conf 中是合乎逻辑的:

# reorder windows
set -f @next_window '#{e|+|:#I,1}'
set -f @previous_window '#{e|-|:#I,1}'
bind C-S-PgUp swap-window -d -t '#{@next_window}'
bind C-S-PgDn swap-window -d -t '#{@previous_window}' 

但是,正如我已经提到的,

swap-window
没有
-F
标志选项,所以
swap-window -d -t '#{e|-|:#I,1}'
只会产生
can't find session: #{e|-|
,ofc
swap-window -d -t '#{@foo}'
can't find session: #{@foo}

tmux
1个回答
0
投票

这对我有用

tmux 3.3a
:

bind -n C-Left  run 'tmux swap-window -d -t #{e|-|:#I,1}'
bind -n C-Right run 'tmux swap-window -d -t #{e|+|:#I,1}'
© www.soinside.com 2019 - 2024. All rights reserved.