This is a simple vim script to send portion of text from a vim buffer to a running tmux session.
It is based on slime.vim http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/, but use tmux instead of screen. However, compared to tmux, screen doesn't have the notion of panes. So, the script was adapted to take panes into account.
Note: If you use version of tmux ealier than 1.3, you should use the stable branch. The version available in that branch isn't aware of panes so it will paste to pane 0 of the window.
(1) This fork provides the ability to send multiple keys to a tmux target at once.
(2) The tmux target is set on buffer basis. This means that every tab in Vim can have its own tmux target. (E.g. you could have a tab in which you edit a Python script and send text and keys to a Python repl and another tab in which you edit an R script and send text and keys to an R repl.)
(3) In this fork of tslime.vim, keybindings are not set automatically
for you. Instead, you can map whatever you'd like to one of the
plugin-specific bindings in your .vimrc
file.
To get the old defaults, put the following in your .vimrc
:
vmap <C-c><C-c> <Plug>SendSelectionToTmux
nmap <C-c><C-c> <Plug>NormalModeSendToTmux
nmap <C-c>r <Plug>SetTmuxVars
To send a selection in visual mode to vim, set the following in your .vimrc
:
vmap <your_key_combo> <Plug>SendSelectionToTmux
To grab the current method that a cursor is in normal mode, set the following:
nmap <your_key_combo> <Plug>NormalModeSendToTmux
Use the following to reset the session, window, and pane info:
nmap <your_key_combo> <Plug>SetTmuxVars
Have a command you run frequently, use this:
nmap <your_key_combo> :Tmux <your_command><CR>
More info about the <Plug>
and other mapping syntax can be found
here.