无剪贴板支持的Vim跨终端复制方案咨询
无剪贴板支持的Vim跨终端复制方案咨询
哥们我太懂你这种执念了——就爱用终端里的vim.basic,不想碰gVim,但跨终端复制粘贴确实卡壳,毕竟两个独立的Vim进程寄存器完全不互通,读不到内容太正常了。给你几个简单好上手的方案,不用搞复杂配置:
临时文件中转法(最稳妥无依赖)
这个完全不用装额外工具,靠系统文件就能搞定:- 在第一个终端的Vim里,选中你要复制的内容(用可视模式
v/V/ctrl+v选择) - 输入命令把选中内容存到临时文件:
:'<,'>w! ~/vim_temp_copy.txt
(如果是复制整个文件内容,直接输:w! ~/vim_temp_copy.txt就行) - 切换到第二个终端的Vim,输入
:r ~/vim_temp_copy.txt,内容就会插入到光标位置 - 用完可以删掉临时文件:
rm ~/vim_temp_copy.txt
- 在第一个终端的Vim里,选中你要复制的内容(用可视模式
调用系统剪贴板工具(需要装轻量工具)
虽然你的Vim本身没剪贴板支持,但可以让它调用系统级的剪贴板工具来中转:- 如果你用的是Linux/Ubuntu,先装xclip:
sudo apt install xclip- 第一个终端Vim选中内容后,输:
:'<,'>w !xclip -selection clipboard - 第二个终端Vim里输:
:r !xclip -selection clipboard -o
- 第一个终端Vim选中内容后,输:
- 如果你用macOS,直接用系统自带的pbcopy/pbpaste:
- 第一个终端Vim选中内容后,输:
:'<,'>w !pbcopy - 第二个终端Vim里输:
:r !pbpaste
- 第一个终端Vim选中内容后,输:
- 如果你用的是Linux/Ubuntu,先装xclip:
Vim客户端-服务端模式(适合经常跨终端操作)
这个能让两个Vim进程互通寄存器,稍微有点技巧但用熟了很方便:- 先在第一个终端启动Vim时指定服务名:
vim --servername MYVIM fileA - 在这个Vim里选中内容,用
"ay把内容存到a寄存器(你也可以用其他任意寄存器) - 切换到第二个终端的Vim,输入命令把第一个Vim的a寄存器内容读过来:
:let @a = system('vim --servername MYVIM --remote-expr ''@a''') - 最后输入
"ap就能把内容粘贴到当前光标位置了
- 先在第一个终端启动Vim时指定服务名:
这些方案都不用你换掉vim.basic,挑个顺手的用就行~
备注:内容来源于stack exchange,提问作者mazda
相关产品推荐
相关产品推荐

