Extremely simple Vim interface for Git
From: Teemu Likonen <hidden>
Date: 2016-06-15 22:45:19
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
endfunction
Now, command :Git works just like "git" from shell except that the
output is displayed in a Vim scratch buffer/window. The buffer will be
wiped out from memory when the window is closed. Filename completion and
piping works. Examples:
:Git diff --cached
:Git help merge
:Git branch | column
(I am aware that there are VCS plugins for Vim. I happen like this
approach better because it works just like the command line Git which
I'm familiar with.)
As a "side effect" this also adds similar :Svn command as well as :Shell
command which can be used to run any shell command and have its output
displayed in a Vim window. Using the first two letters of :Shell is
enough in my system because I don't have other custom commands which
start with letters "Sh".
:Sh ls -l