You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vim-vimux/README.mkd

104 lines
3.6 KiB
Markdown

12 years ago
# vimux
Easily interact with tmux from vim. This project is still in development, so some features are still missing.
12 years ago
12 years ago
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.
12 years ago
## Installation
With **[vim-bundle](https://github.com/benmills/vim-bundle)**: `vim-bundle install benmills/vimux`
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`.
12 years ago
12 years ago
## Usage
### RunVimTmuxCommand
12 years ago
Run a system command in a small horizontal split bellow the current pane vim is in.
```viml
" Run the current file with rspec
12 years ago
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>
12 years ago
```
### RunLastVimTmuxCommand
Run the last command executed by `RunVimTmuxCommand`
```viml
" Run last command executed by RunVimTmuxCommand
12 years ago
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
12 years ago
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
12 years ago
map <Leader>rs :InterruptVimTmuxRunner<CR>
```
12 years ago
### Full Keybind Example
12 years ago
```viml
" Run the current file with rspec
12 years ago
map <Leader>rb :call RunVimTmuxCommand("clear; rspec " . bufname("%"))<CR>
12 years ago
" Prompt for a command to run
map <Leader>rp :PromptVimTmuxCommand<CR>
" Run last command executed by RunVimTmuxCommand
12 years ago
map <Leader>rl :RunLastVimTmuxCommand<CR>
12 years ago
" 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
12 years ago
map <Leader>rs :InterruptVimTmuxRunner<CR>
12 years ago
```
## Options
### VimuxHeight
Set the percent height of the runner pane opened by `RunVimTmuxCommand`.
12 years ago
**Default: `"20"`**
```viml
let VimuxHeight = "50"
12 years ago
```
## Todo
12 years ago
The features I would like to add in the near future.
* Add the ability to target any tmux session, window and pane