
我有一个在 VirtualBox 和 Vagrant 下运行的虚拟 Linux 开发环境。我使用 tmux 和 vim 来设置多个打开的 vim 实例。我希望能够在这些实例之间复制和粘贴。
我了解到剪贴板功能仅随 X11 提供。如何在仅命令行 Linux 环境中的多个 vim 实例之间启用剪贴板功能?
答案1
由于您已经在使用它,我建议您tmux
完全支持复制和粘贴 - 请参阅手册页了解更多信息。
您可以使用命令查看当前的键绑定-在该列表中tmux
list-keys
查找begin-selection
、copy-selection
和命令。paste-buffer
默认情况下,绑定是:
- [- 启动复制/粘贴模式
- h、、、-用于移动光标的导航j键kl
vi
- v- 开始文本选择(选择后,点击Enter复制到缓冲区以便稍后粘贴)
- ]- 粘贴复制的文本
将其与基于诅咒的应用程序一起使用时存在一些限制vim
(因为tmux
无法管理滚动) - 您无法滚动回以前的输出。
作为替代方案(如果您只是在vim
会话之间进行复制),您可以使用临时文件作为剪贴板(如果您不使用 X11,则需要这样做)。看这个帖子@muru 建议了解更多信息。
答案2
如果预期行为是关于存储 -> 检索,则不需要坚持使用剪贴板,该指令源自https://vim.fandom.com/wiki/Copy_and_paste_ Between_sessions_using_a_temporary_file
"custom copy'n'paste
vmap <C-c> :w! ~/.vbuf<CR> "copy the current visual selection to ~/.vbuf
nmap <C-c> :.w! ~/.vbuf<CR> "copy the current line to the buffer file if no visual selection
nmap <C-v> :r ~/.vbuf<CR> "paste the contents of the buffer file
一旦我们将内容存储在 ~/.vbuf 中,我们就可以自由地以自己的方式检索内容。