使用 fzf-tmux 快速 window 切换的 tmux 脚本给了我错误的选项
tmux script for fast window switching with fzf-tmux gives me the wrong options
我写了以下内容,它允许我用 fzf 切换 tmux window:
tmux list-windows -F "#I:#W" | fzf-tmux | cut -d ":" -f 1 | xargs tmux select-window -t
当我在 shell 中 运行 时,它完美地工作,给我一个 windows 的 fzf
列表,我可以搜索并切换到它。
我将它绑定到 tmux 中的 f
键:
# fast window switching
unbind f
bind-key f run "tmux list-windows -F \"#I:#W\" | fzf-tmux | cut -d \":\" -f 1 | xargs tmux select-window -t"
但是当我运行它时,它显示相同的windowN次(其中N是我打开的windows的数量)。
所以如果我有 3 个 windows 打开,运行在 zsh 中运行脚本会给我:
1. first window
2. second window
3. third window
tmux 键绑定给我的地方
1. first window
1. first window
1. first window
我以前没有写过 tmux 脚本,所以也许有比我在这里做的更好的方法来获取 windows?否则,我不明白为什么当来自 tmux 的 运行 和 shell.
中的 运行 时我得到不同的选项
更新:
似乎 run-shell "tmux list-windows"
正确地输出了不同的 windows(但是有大量我不想要的布局信息),而 run-shell "tmux list-windows -F '#I:#W'"
给了我原来的问题每个 window 条目重复相同的 window。
我认为问题在于 tmux 正在为 当前 window 扩展 #I:#W
,而不是将其传递给 list-windows
命令,所以我需要逃离他们。关于如何做到这一点有什么想法吗?
更新 2:
答案是对变量进行双重散列(##I:##W
而不是 #I:#W
)。
如果以后有人想使用这个脚本,正确的版本是:
# fast window switching
bind -n C-f run-shell "tmux list-windows -F \"##I:##W\" | fzf-tmux | cut -d \":\" -f 1 | xargs tmux select-window -t"
感谢您分享您的解决方案!对我帮助很大:)
对于遇到此 post 并想知道如何使用此命令在 tmux 会话之间切换的人:
bind-key C-f run-shell "tmux list-sessions -F \"##S\" | fzf-tmux | xargs tmux switch -t"
我写了以下内容,它允许我用 fzf 切换 tmux window:
tmux list-windows -F "#I:#W" | fzf-tmux | cut -d ":" -f 1 | xargs tmux select-window -t
当我在 shell 中 运行 时,它完美地工作,给我一个 windows 的 fzf
列表,我可以搜索并切换到它。
我将它绑定到 tmux 中的 f
键:
# fast window switching
unbind f
bind-key f run "tmux list-windows -F \"#I:#W\" | fzf-tmux | cut -d \":\" -f 1 | xargs tmux select-window -t"
但是当我运行它时,它显示相同的windowN次(其中N是我打开的windows的数量)。
所以如果我有 3 个 windows 打开,运行在 zsh 中运行脚本会给我:
1. first window
2. second window
3. third window
tmux 键绑定给我的地方
1. first window
1. first window
1. first window
我以前没有写过 tmux 脚本,所以也许有比我在这里做的更好的方法来获取 windows?否则,我不明白为什么当来自 tmux 的 运行 和 shell.
中的 运行 时我得到不同的选项更新:
似乎 run-shell "tmux list-windows"
正确地输出了不同的 windows(但是有大量我不想要的布局信息),而 run-shell "tmux list-windows -F '#I:#W'"
给了我原来的问题每个 window 条目重复相同的 window。
我认为问题在于 tmux 正在为 当前 window 扩展 #I:#W
,而不是将其传递给 list-windows
命令,所以我需要逃离他们。关于如何做到这一点有什么想法吗?
更新 2:
答案是对变量进行双重散列(##I:##W
而不是 #I:#W
)。
如果以后有人想使用这个脚本,正确的版本是:
# fast window switching
bind -n C-f run-shell "tmux list-windows -F \"##I:##W\" | fzf-tmux | cut -d \":\" -f 1 | xargs tmux select-window -t"
感谢您分享您的解决方案!对我帮助很大:)
对于遇到此 post 并想知道如何使用此命令在 tmux 会话之间切换的人:
bind-key C-f run-shell "tmux list-sessions -F \"##S\" | fzf-tmux | xargs tmux switch -t"