git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Extremely simple Vim interface for Git

From
TLTeemu Likonen <tlikonen@iki.fi>
Date
Sep 6, 2008, 19:37 UTC
Message-ID
<20080906193744.GA3122@mithlond.arda.local>

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
Next: Michael Wookey
Message 1 of 11 in “Extremely simple Vim interface for Git”
  1. Teemu LikonenSep 6, 2008
  2. Michael WookeySep 7, 2008
  3. Teemu LikonenSep 7, 2008
  4. Teemu LikonenSep 7, 2008
  5. Michael WookeySep 7, 2008
  6. Teemu LikonenSep 8, 2008
  7. Thomas AdamSep 7, 2008
  8. Teemu LikonenSep 7, 2008
  9. Thomas AdamSep 7, 2008
  10. Bob HiestandSep 8, 2008
  11. Peter Valdemar Mørch (Lists)Sep 9, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.