我试图让这个键绑定工作以将当前窗格的内容通过管道传输到我选择的程序:
bind P command-prompt -I "vim -" \
"capture-pane -eJ -S - -E -; \
set-buffer -n PIPE; \
new-window -n '|%1' 'tmux save-buffer -b PIPE - | %1'; \
delete-buffer -b PIPE"
Run Code Online (Sandbox Code Playgroud)
- 但它总是导致 tmux 报告no buffer PIPE
。这段文字通常显示和覆盖的速度太快,我什至都没有注意到;我设法通过使用sleep 10
作为命令名称将输出传送到它来引出它。
我选择重命名创建的自动命名缓冲区,capture-pane
否则new-window
调用似乎会将 tmux 的当前/默认缓冲区重置为我上次在复制模式下复制的缓冲区。据我所知,新缓冲区应该重命名PIPE
。
我有一个类似但更简单的绑定,它将内容输出到文件而不是管道,完美运行:
bind H command-prompt -I "tmux_#W.txt" \
"capture-pane -eJ -S - -E -; \
save-buffer '%%'; \
delete-buffer"
Run Code Online (Sandbox Code Playgroud)
如果我一一运行其中的命令,程序会像从任何其他管道一样接收窗格的文本。我究竟做错了什么?
tmux ×1