This is a simple vim script to send a portion of text from a vim buffer to a running tmux session.
It is based on slime.vim, but uses tmux instead of screen. Since screen doesn't have the notion of panes, the script was adapted to take them into account.
Note: If you use a version of tmux earlier 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.
You can tell tslime.vim to use the current session and current window; this lets you avoid specifying this on every startup of vim.
let g:tslime_always_current_session = 1
let g:tslime_always_current_window = 1
These are disabled by default, meaning you will have the ability to choose from every session/window/pane combination.
You can also hardcode the window and pane number you want to use. For example:
let g:tslime_window = 2
let g:tslime_pane_number = 1
This will automatically send output to the first pane of your second window.
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.