我的tmux.conf中有以下代码,它以复制模式复制所选内容,并将其发送到我打开vim的另一个窗格。
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{}
命令会触发,所选内容的每一行都逐一发送到该窗格。因此,如果我选择6行,tmux会将这6行发送到包含vim的窗格。
但我只想调用一次带有整个选定字符串的send -keys.发送到窗格。
那么,有没有其他工具可以读取标准输入并将其发送到tmux send-keys
,或者我是否可以修改xargs -I{}
部件,使其只对所有选定的行执行一次?
发布于 2016-02-17 18:15:41
有一个类似于-I的-J标志,但它不拆分输入。这几乎就是你想要的,除了-J不能处理带引号的字符串。
因此,在仔细查看之后,有一个-L标志告诉xargs要读取多少非空行。如果您将-L设置为比您要发送的参数更高的数字,则应同时发送所有参数,例如
bind-key -t vi-copy o copy-pipe "xargs -I{} -L 10000 tmux send-keys -t 1 ';call OpenTestFile(\"{}\")' Enter && tmux select-pane -t 1"
我怀疑如果您选择的其中一个是空行,这将会中断。
https://stackoverflow.com/questions/35463874
复制