示例:在一个tmux窗格中复制(通过vim),然后切换到另一个窗格(运行另一个vim实例)并使用vim paste命令粘贴.我知道这可以通过tmux(使用前缀+)完成,但如果我可以使用vim绑定进行复制和粘贴,那将非常方便,因为我只是在运行vim的不同窗格之间切换.
有任何想法吗?
kev*_*kev 47
对不起,我试图说服你使用vim内置功能.
为copy/paste
方便起见,您可以在另一个标签页中打开文件:
:tabe /path/to/another/file
Run Code Online (Sandbox Code Playgroud)
使用gt或gT切换Tabpages.
或拆分窗口以编辑另一个文件:
:sp /path/to/another/file
Run Code Online (Sandbox Code Playgroud)
使用Ctrl-ww切换窗口.
要垂直分割窗口,请使用:vsp file
这是我的.tmux.conf
档案:
# vim
setw -g mode-keys vi
bind [ copy-mode
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy V rectangle-toggle
bind ] paste-buffer
# buffer
bind Space choose-buffer
Run Code Online (Sandbox Code Playgroud)
我只需要复制终端输出时使用它们.
che*_*aie 20
我已经使用了这个方便的绑定几年:)
" copy to buffer
vmap <C-c> :w! ~/.vimbuffer<CR>
nmap <C-c> :.w! ~/.vimbuffer<CR>
" paste from buffer
map <C-p> :r ~/.vimbuffer<CR>
Run Code Online (Sandbox Code Playgroud)
Con*_*ner 12
虽然我同意只使用一个vim实例更好,但你可以单独使用tmux.它有内置的复制模式.我的tmux.conf设置如下:
setw -g mode-keys vi
unbind [
unbind p
bind C-y copy-mode
bind p paste-buffer
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy Escape cancel
Run Code Online (Sandbox Code Playgroud)
所以你可以prefix-<C-y>
用来激活复制模式,/search term
作为一个例子去你想去的地方,v
直观地选择,y
进入tmux.然后转到其他vim会话并进入插入模式.使用prefix-p
粘贴有什么在TMUX粘贴缓冲区.还有一些方法可以将tmux的粘贴缓冲区复制到系统剪贴板中.
Dao*_*Wen 12
我目前在工作时遇到了运行Windows的笔记本电脑,但是我在运行Linux的服务器上进行了所有开发,所以我最终在PuTTY上的tmux会话中工作了一整天.
我想在tmux会话中的不同窗口中运行的vim实例之间复制文本.我尝试使用*
寄存器复制到系统剪贴板,但因为我通过腻子连接我没有X会话,所以是没有系统剪贴板,即使我推出的而不是vim gVim的.(我可能已经能够使用x-forwarding或其他东西来解决这个问题,但我不想在Windows上安装x-server.)
我认为应该有一种方法可以使用vim中的tmux复制/粘贴缓冲区代替系统键盘,当然有人为此编写了一个插件.
安装fakeclip会添加一个新的寄存器,&
映射到tmux的粘贴缓冲区.由于我的所有vim实例都在同一个tmux会话中,因此在它们之间抽取/放置文本非常简单.
插件文档说假冒伪劣也应该与gnu屏幕一起使用,但我没有亲自测试过.
TL;博士
安装fakeclip插件,然后就可以使用"&y到猛拉到TMUX的缓冲区,"&p以把从TMUX的缓冲区.