Vim 复制到 tmux 剪贴板

Vim 复制到 tmux 剪贴板

我看到了很多关于如何让 vim 复制到系统剪贴板的解释(涉及 Linux 的 xclip 或 OSX 的 pbcopy),但我想将其复制到 tmux 剪贴板。说清楚一点,我想要的是将光标放在一个单词上,然后点击类似的东西"*yiw,然后使用 tmux 跳转到另一个窗口(可能是我想在其中粘贴 curl 或 wget 的大 URL 的窗口)并按下Ctrl-B ]粘贴(或使用您使用的任何 tmux 前缀键)。感谢任何人提供的帮助。如果可以的话,那就太棒了。

答案1

不清楚为什么要使用 tmux 剪贴板。

我发现从 vim 或任何其他应用程序复制到系统剪贴板,然后将其粘贴到 tmux 上更容易。您可以在 ~/.tmux.conf 上尝试执行以下操作:

bind-key -n C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"

这允许使用从系统剪贴板粘贴到 tmux Ctrl-V

有关此方法的更多信息:Tmux:剪贴板集成

答案2

如果你在终端上工作,而不是在本地 vim 进程中,请考虑使用vim-tbone可以将选择存储到 tmux 缓冲区。这是将 :Tyank :Tput 命令映射到您选择的键盘快捷键的基本配置(我分别使用 ty 和 tp)

答案3

我更喜欢将 tmux 剪贴板和系统剪贴板分开。更多解释这里,但这些是我使用的映射:

vnoremap <leader>tc y<cr>:call system("tmux load-buffer -", @0)<cr>gv
nnoremap <leader>tp :let @0 = system("tmux save-buffer -")<cr>"0p<cr>g;

与我见过的其他策略相比,它的主要优势在于,它可以忠实地复制 vim 选择(包括块选择),而不是逐行工作。同样,它会将 tmux 缓冲区粘贴到光标处,而不是逐行工作。

一个缺点是,复制需要视觉选择(而不是仅仅移动)。

编辑:如果需要,修改复制映射可能很容易,如下所示nnoremap <leader>tc :call system("tmux load-buffer -", @0)——这将要求用户首先提取感兴趣的文本,然后将他们提取的内容复制到 Tmux。这样做的好处是,普通的 vim 移动提取无需先进行视觉选择即可工作。

答案4

一种方法是:

在 Vim 中,:only | set nonu 在 Tmux 中,ctrl-b z

这会使缓冲区占据整个终端屏幕。然后您可以使用 tmux 选择文本。

另一种方法是使用 tmux 块选择:

  1. ctrl-b [进入选择模式
  2. ctrl-v SPACE进入块选择模式
  3. 仅选择您想要复制的文本。

相关内容