我的 tmux.conf 中有以下代码,它以复制模式复制选择并将其发送到我打开 vim 的另一个 Pane 。
bind-key -t vi-copy o copy-selection
bind-key -t vi-copy o copy-pipe "xclip -sel clip -i"
bind-key -t vi-copy o copy-pipe "xargs -I{} tmux send-keys -t 1 ';call OpenTestFile(\"{}\")' Enter && tmux select-pane -t 1"
我认为,xargs -I{}
命令会触发,将所选内容的每一行都一一发送到该 Pane 。因此,如果我选择 6 行,tmux 会将这 6 行发送到包含 vim 的 Pane 。
但我只想调用一次发送键并将整个选定字符串发送到 Pane 。
那么,是否有另一种工具可以读取标准输入并将其发送到 tmux send-keys
或者我可以修改 xargs -I{}
部分,即它只对所有选定的行执行一次?
最佳答案
有一个 -J 标志类似于 -I,但它不会拆分输入。这几乎就是您想要的,除了 -J 不适用于带引号的字符串。
所以经过一番探索之后,有一个 -L 标志告诉 xargs 要读取多少非空行。如果您将 -L 设置为高于您发送的参数的数字,则它们应该立即发送,例如
bind-key -t vi-copy o copy-pipe "xargs -I{} -L 10000 tmux send-keys -t 1 ';call OpenTestFile(\"{}\")' 输入 && tmux选择 Pane -t 1"
我怀疑如果您的选择之一是空行,这会中断。
关于vim - tmux 将选择从复制模式发送到其他 Pane (xargs 加入?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463874/