我看到了很多关于如何让 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 块选择:
ctrl-b [
进入选择模式ctrl-v SPACE
进入块选择模式- 仅选择您想要复制的文本。