vim-vimux/README.mkd

104 lines
3.6 KiB
Markdown
Raw Normal View History

2012-02-28 02:48:42 +00:00
# vimux
2012-03-03 17:53:57 +00:00
Easily interact with tmux from vim. This project is still in development, so some features are still missing.
2012-02-28 02:48:42 +00:00
2012-03-03 18:01:10 +00:00
What inspired me to write vimux was [tslime.vim](https://github.com/kikijump/tslime.vim), a plugin that lets you send input to tmux. While tslime.vim works well, I felt it wasn't optimized for my primary use case which was having a smaller tmux pane that I would use to run tests or play with a REPL.
My goal with vimux is to make interacting with tmux from vim effortless. By default when you call `RunVimTmuxCommand` vimux will create a 20% tall horizontal pane under your current tmux pane and execute a command in it without losing focus of vim. Once that pane exists whenever you call `RunVimTmuxCommand` again the command will be executed in that pane. As I was using vimux myself I wanted to rerun commands over and over. An example of this was running the current file through rspec. Rather than typing that over and over I wrote `RunLastVimTmuxCommand` that will execute the last command you called with `RunVimTmuxCommand`.
Other auxiliary functions and the ones I talked about above can be found bellow with a full description and example key binds for your vimrc.
2012-02-28 02:48:42 +00:00
## Installation
With **[vim-bundle](https://github.com/benmills/vim-bundle)**: `vim-bundle install benmills/vimux`
2012-03-03 17:53:57 +00:00
Otherwise download the latest [tarball](https://github.com/benmills/vimux/tarball/master), extract it and move `plugin/vimux.vim` inside `~/.vim/plugin`. If you're using [pathogen](https://github.com/tpope/vim-pathogen), then move the entire folder extracted from the tarball into `~/.vim/bundle`.
2012-02-28 02:55:14 +00:00
2012-02-28 02:48:42 +00:00
## Usage
### RunVimTmuxCommand
2012-02-28 02:48:42 +00:00
Run a system command in a small horizontal split bellow the current pane vim is in.
```viml
" Run the current file with rspec
2012-03-01 22:49:20 +00:00
map <Leader>rb :call RunVimTmuxCommand("clear; rspec " . bufname("%"))<CR>
```
### PromptVimTmuxCommand
Prompt for a command and run it in a small horizontal split bellow the current pane.
```viml
" Prompt for a command to run
map <Leader>rp :PromptVimTmuxCommand<CR>
2012-02-28 02:48:42 +00:00
```
### RunLastVimTmuxCommand
Run the last command executed by `RunVimTmuxCommand`
```viml
" Run last command executed by RunVimTmuxCommand
2012-03-08 02:20:53 +00:00
map <Leader>rl :RunLastVimTmuxCommand<CR>
```
### InspectVimTmuxRunner
Move into the tmux runner pane created by `RunVimTmuxCommand` and enter copy mode (scroll mode).
```viml
" Inspect runner pane
map <Leader>ri :InspectVimTmuxRunner<CR>
```
### CloseVimTmuxPanes
2012-02-28 02:48:42 +00:00
Close all other tmux panes in the current window.
```viml
" Close all other tmux panes in current window
map <Leader>rx :CloseVimTmuxPanes<CR>
```
### InterruptVimTmuxRunner
Interrupt any command that is running inside the runner pane.
```viml
" Interrupt any command running in the runner pane
2012-03-01 01:22:10 +00:00
map <Leader>rs :InterruptVimTmuxRunner<CR>
```
2012-03-01 01:22:10 +00:00
### Full Keybind Example
2012-02-29 18:49:07 +00:00
```viml
" Run the current file with rspec
2012-03-01 22:49:20 +00:00
map <Leader>rb :call RunVimTmuxCommand("clear; rspec " . bufname("%"))<CR>
2012-02-29 18:49:07 +00:00
" Prompt for a command to run
map <Leader>rp :PromptVimTmuxCommand<CR>
" Run last command executed by RunVimTmuxCommand
2012-03-08 02:20:53 +00:00
map <Leader>rl :RunLastVimTmuxCommand<CR>
2012-02-29 18:49:07 +00:00
" Inspect runner pane
map <Leader>ri :InspectVimTmuxRunner<CR>
" Close all other tmux panes in current window
map <Leader>rx :CloseVimTmuxPanes<CR>
" Interrupt any command running in the runner pane
2012-03-01 01:22:10 +00:00
map <Leader>rs :InterruptVimTmuxRunner<CR>
2012-02-29 18:49:07 +00:00
```
## Options
### VimuxHeight
Set the percent height of the runner pane opened by `RunVimTmuxCommand`.
2012-02-29 04:52:52 +00:00
**Default: `"20"`**
```viml
let VimuxHeight = "50"
2012-02-28 02:48:42 +00:00
```
## Todo
2012-02-28 02:55:14 +00:00
The features I would like to add in the near future.
* Add the ability to target any tmux session, window and pane