如何增强vim的抓取和粘贴,所以当我猛拉时,vim将内容写入文件。粘贴时,它使用文件中的内容。我希望有一个系统范围的文件作为全局缓冲区。
上下文:我在远程服务器(通过ssh)上的不同tmux拆分中运行vim。我希望在tmux拆分中的vims之间无缝复制和粘贴。我试了一堆插件,但没有一个工作,所以这个问题。
答案 0 :(得分:1)
我相信vim允许你这样做:
:wv
并点按:rv
并点按p
以粘贴您(现在)全局剪贴板的内容这应该适用于不同的vim会话,无论它们是否在不同的tmux窗格中运行。
答案 1 :(得分:1)
您想看看:
map-operator
因为y
是运算符:运动待处理命令readfile()
和writefile()
导致r
或w
命令,很好用,但不能用于脚本visualmode()
获取选择共享文件是硬编码的/tmp/yank.txt
:
function! Yank(type, ...)
" Invoked from Visual mode, use gv command.
if a:0
silent exe "normal! gvy"
elseif a:type == 'line'
silent exe "normal! '[V']y"
else
silent exe "normal! `[v`]y"
endif
call writefile([@@], '/tmp/yank.txt')
endfunction
function! Paste(is_back)
let @t = join(readfile('/tmp/yank.txt'), '')
if a:is_back
normal! "tP
else
normal! "tp
endif
endfunction
nnoremap y :set opfunc=Yank<CR>g@
nmap Y Vy
vnoremap y :call Yank(visualmode(), 1)<CR>
vnoremap Y :call Yank(visualmode(), 1)<CR>
nnoremap p :call Paste(0)<CR>
nnoremap P :call Paste(1)<CR>
答案 2 :(得分:0)
yankring插件将yanks保存在文件中。然后,您可以粘贴p<C-n>
或p<C-p>
复制的任何先前的文本。
如果这不行,您至少可以尝试根据需要对它进行反向工程。