How to copy and paste between different tmux panes running vim instances

Sorry, I'm trying to convince you to use vim built-in features.


To make the copy/paste easy, you can open files in another Tabpages:

:tabe /path/to/another/file

Use gt or gT to switch Tabpages.


Or split the window to edit another file:

:sp /path/to/another/file

Use Ctrl-ww to switch Windows.
To split the window vertically, please use :vsp file


Update:

This is my .tmux.conf file:

# 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

I only use them when I need to copy terminal output.


I've been used this handy binding for several years :)

" copy to buffer
vmap <C-c> :w! ~/.vimbuffer<CR>
nmap <C-c> :.w! ~/.vimbuffer<CR>
" paste from buffer
map <C-p> :r ~/.vimbuffer<CR>

I'm currently stuck with a laptop running Windows at work, but I do all my development on a server running Linux, so I end up working in a tmux session over PuTTY all day.

I wanted to copy text between vim instances running in different windows in my tmux session. I tried using the * register to copy to the system clipboard, but since I'm connected through PuTTY I don't have an X session, so there is no system clipboard, even if I launch gVim instead of vim. (I might have been able to use x-forwarding or something to fix this, but I didn't want to install an x-server on windows.)

I thought that there should be a way to use the tmux copy/paste buffer from vim in place of the system keyboard, and sure enough someone has written a plugin for that.

Installing fakeclip adds a new register, &, which maps to tmux's paste buffer. Since all my vim instances are within the same tmux session, this makes it super simple to yank/put text between them.

The plugin documentation says that fakeclip should also work with gnu screen, but I haven't personally tested that.


tl;dr

Install the fakeclip plugin, and then you can use "&y to yank into tmux's buffer, and "&p to put from tmux's buffer.


Although I agree that it's better to just use one vim instance, you can do this with tmux alone. It has a built in copy-mode. My tmux.conf is set up like:

  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

So you can use prefix-<C-y> to activate copy mode, /search term as an example to go where you want, v to visually select, y to yank into tmux. Then go to other vim session and get into insert mode. Use prefix-p to paste what's in the tmux paste buffer. There are also ways to copy tmux's paste buffer to your system clipboard.