将文件从tmux窗格(或窗口)目录复制到另一个窗格(或窗口)目录

时间:2015-10-08 00:48:43

标签: tmux cp

示例:

2个窗格。

Pane 1当前目录:/a/b/c/d

Pane 2当前目录:/a/f/g

我想将窗格1的当前目录中的file.csv复制到窗格2的当前目录。

我的所作所为:

在窗格1中:

cp file.csv ../../../f/g

从窗格1中的dir找到正确的相对路径是缓慢而烦人的,我觉得我可以将文件从一个窗格“拖放”到另一个窗格。

有没有办法做一些类似拖拽的事情?

“好”解决方案的示例:

cp file.csv $pane2dir

由于

2 个答案:

答案 0 :(得分:2)

我的tmux.conf中有以下内容

# get directory from other pane using xsel
bind J run-shell -b -t bottom "echo -n #{pane_current_path} | xsel -i"
bind K run-shell -b -t top "echo -n #{pane_current_path} | xsel -i"
bind H run-shell -b -t left "echo -n #{pane_current_path} | xsel -i"
bind L run-shell -b -t right "echo -n #{pane_current_path} | xsel -i"

我要复制到的窗格通常位于当前窗格的左侧或右侧。如果它在右边,我会<prefix> shift-l将右窗格的当前目录放在剪贴板中。

为了满足您的解决方案要求,可以对其进行修改以创建命令,例如:

cp file.csv $(tmux run-shell -b -t right "echo -n #{pane_current_path} |xsel -i" && (sleep 0.01; xsel -o))

为方便起见,将这些内容放在shell脚本中是有意义的。

在给出我的答案后,我玩了一下,并提出以下

bind L if-shell -b -t right "tmux set-buffer -b panedir #{pane_current_path}" "paste-buffer -db panedir"

将“右”窗格的当前目录直接放在命令行上。

答案 1 :(得分:0)

我有同样的问题,我使用tmux-yank插件。它具有将窗格当前工作目录复制到系统剪贴板的功能。 (免责声明:我是该插件的作者。)

要提供问题的完整答案,以下是我使用此插件执行的步骤:

  • 导航到tmux窗格2,将窗格工作目录移动到剪贴板
  • 导航到tmux窗格1,开始输入命令,然后在Mac上使用ctrl-vCmd-v粘贴您需要的路径