如何在运行vim实例的不同tmux窗格之间复制和粘贴
例如:复制一个tmux窗格(通过vim),然后切换到另一个窗格(运行另一个vim实例)并使用vim paste命令进行粘贴。 我知道这可以通过tmux(使用前缀+)来完成),但如果我可以使用vim绑定进行复制和粘贴,将会非常方便,因为我只是在运行vim的不同窗格之间切换。
有任何想法吗?
对不起,我试图说服你使用vim的内置功能。
为了方便copy/paste
,您可以在另一个Tabpages中打开文件:
:tabe /path/to/another/file
使用gt或gT切换Tabpages。
或者分割窗口来编辑另一个文件:
:sp /path/to/another/file
使用Ctrl-ww切换Windows。
要垂直分割窗口,请使用: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
我只在需要复制终端输出时使用它们。
我已经使用这个方便的绑定了几年:)
" copy to buffer
vmap <C-c> :w! ~/.vimbuffer<CR>
nmap <C-c> :.w! ~/.vimbuffer<CR>
" paste from buffer
map <C-p> :r ~/.vimbuffer<CR>
虽然我同意只使用一个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
因此,您可以使用prefix-<Cy>
激活复制模式, /search term
作为示例以便到达您想要的位置, v
以可视方式选择, y
将其放入tmux中。 然后转到其他vim会话并进入插入模式。 使用prefix-p
粘贴tmux粘贴缓冲区中的内容。 还有一些方法可以将tmux的粘贴缓冲区复制到系统剪贴板。
上一篇: How to copy and paste between different tmux panes running vim instances