Re: Extremely simple Vim interface for Git
- From
Michael Wookey <michaelwookey@gmail.com>
- Date
- Sep 7, 2008, 10:32 UTC
- Message-ID
- <d2e97e800809070332t35e4ed46u7af4653ea768b39b@mail.gmail.com>
- In-Reply-To
- <20080906193744.GA3122@mithlond.arda.local>
Show 20 quoted lines
> Here's a very simple idea for using Git from Vim editor. Add these lines
> to your ~/.vimrc file:
>
>
> command! -complete=file -nargs=* Git call s:RunShellCommand('git '.<q-args>)
> command! -complete=file -nargs=* Svn call s:RunShellCommand('svn '.<q-args>)
> command! -complete=file -nargs=+ Shell call s:RunShellCommand(<q-args>)
>
> let $EDITOR = '/usr/bin/gvim --nofork'
>
> function! s:RunShellCommand(cmdline)
> botright new
> setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
> setlocal nowrap
> call setline(1,a:cmdline)
> call setline(2,substitute(a:cmdline,'.','=','g'))
> execute 'silent 2read !'.escape(a:cmdline,'()%#')
> setlocal nomodifiable
> 1
> endfunctionIf you alter the RunShellCommand() function to the following -
function! s:RunShellCommand(cmdline)
botright new
setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
setlocal nowrap
if stridx(a:cmdline, "diff") > 0
set filetype=diff
endif
execute 'silent 0read !'.escape(a:cmdline,'%#')
setlocal nomodifiable
1
endfunctionThen Vim will apply diff syntax highlighting to the scratch buffer when a "diff" command is executed.
For example:
:Git diff :Git diff --cached
etc..