vim - tmux 将选择从复制模式发送到其他 Pane (xargs 加入?)

标签 vim tmux xargs

我的 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/

相关文章:

vim - 如何在 Vim 中打开以前打开的缓冲区?

vim - 将 Emacs/vim 高亮转换为 TextMate(用于 SublimeText)

linux - ARM 的 vim 交叉编译

linux - 如何在 tmux 窗口中启动脚本后自动终止 ssh 连接?

scroll - tmux 鼠标复制模式跳到底部

linux - vim自动选择服务器名

vim - Tmux 复制缓冲区限制

linux - Xargs 的最佳输出格式

vim - 为什么“查找文件名| xargs vim”是否会导致奇怪的终端行为?

git - 如何使用 bash 在每次提交的 git log 输出上运行命令