.vimrc

Thu, 29 May 2014 23:18:16 -0400

author
Meredith Howard <mhoward@roomag.org>
date
Thu, 29 May 2014 23:18:16 -0400
changeset 12
3e475410324b
parent 11
82a2d994355e
child 13
c061abf8217c
permissions
-rw-r--r--

Another windows fix, guess rc isn't just a api change

set nocompatible

let on_windows=0
if has('win32') || has('win64') 
  " vim in cygwin has win32 = 0 and win32unix = 1
  let on_windows=1
end

" call pathogen#infect()
" call pathogen#helptags()

" Setting up Vundle - the vim plugin bundler
  let installed_vundle=0

  if on_windows == 0
    let vundle_readme=expand('~/.vim/bundle/vundle/README.md')
  else
    let vundle_readme=expand('~/vimfiles/bundle/vundle/README.md')
  endif

  if !filereadable(vundle_readme)
    if !executable('git')
      echo "You probably want git installed and in PATH"
      quit
    endif

    let installed_vundle=1
    echo "Installing Vundle.."
    echo ""
    if on_windows == 0
      silent !mkdir -p ~/.vim/bundle
      silent !git clone https://github.com/gmarik/vundle ~/.vim/bundle/vundle
    else
      "windows is weird about args and quoting
      silent execute '!mkdir "'. $HOME .'\vimfiles\bundle"'
      silent execute '!git clone https://github.com/gmarik/vundle "'. $HOME .'\vimfiles\bundle\vundle"'
    endif
  endif

  if on_windows == 0
    set rtp+=~/.vim/bundle/vundle/
    call vundle#rc()
  else
    set rtp+=~/vimfiles/bundle/vundle/
    call vundle#rc('~/vimfiles/bundle')
  endif

  Plugin 'gmarik/vundle'

  Plugin 'altercation/vim-colors-solarized'
  Plugin 'bling/vim-airline'

  Plugin 'Shougo/vimproc.vim'
  Plugin 'Shougo/unite.vim'
  Plugin 'Shougo/vimshell.vim'
  Plugin 'sjl/gundo.vim'
  Plugin 'majutsushi/tagbar'
  Plugin 'godlygeek/tabular'
  Plugin 'tomtom/tcomment_vim'

  Plugin 'danchoi/ri.vim'
  Plugin 'tpope/vim-fugitive'
  Plugin 'ludovicchabant/vim-lawrencium'

  if installed_vundle == 1
    echo "Installing Plugins, please ignore key map error messages"
    echo ""
    :PluginInstall
  endif
" Setting up Vundle - the vim plugin bundler end


syntax on
filetype plugin indent on

set enc=utf-8

set hlsearch
set ic smartcase

set lcs=tab:→·,trail:·

set ve=block

set autoindent
set expandtab
set shiftwidth=2
set softtabstop=2
" vim: enc=utf-8 et sts=2 sw=2

set backspace=indent,eol,start

" set nu
set scrolloff=2
set ruler
set showcmd
set wildmenu

nmap <silent> <F1> :Unite buffer<CR>
nmap <silent> <F2> :Unite file<CR>
nmap <silent> <F3> :VimShell<CR>
map  <silent> <F4> :noh<CR>
nmap <silent> <F5> :GundoToggle<CR>
nmap <silent> <F8> :TagbarToggle<CR>

" This is supposed to get a CtrlP workalike with fuzzy match
" but i need to fix ignores and always chdir to a good place
if has("win32") || has("win16")
  nmap <silent> <S-F2> :Unite -start-insert file_rec:!<CR>
else
  nmap <silent> <S-F2> :Unite -start-insert file_rec/async:!<CR>
endif

" F-n keys call out to normal mode from insert mode
imap <F1> <C-O><F1>
imap <F2> <C-O><F2>
" imap <F3> <C-O><F3>
imap <F4> <C-O><F4>
" imap <F5> <C-O><F5>
" imap <F6> <C-O><F6>
" imap <F7> <C-O><F7>
imap <F8> <C-O><F8>

" Don't assume to scan includes when autocompleting
set cpt-=i

" Never open with folds collapsed
set nofoldenable

set lbr
set sbr=»\ 

set statusline=%f%m%r%h%w\ %y\ %=%l,%c\ %p%%\ %L
set laststatus=2

if on_windows == 1
  let $MYVIM=$HOME.'/vimfiles'

  if !filewritable( $MYVIM . '/var' )
    silent execute '!mkdir "'.$HOME.'\vimfiles\var"'
  endif
  if !filewritable( $MYVIM. '/var/backup' )
    silent execute '!mkdir "'.$HOME.'\vimfiles\var\backup"'
  endif
  if !filewritable( $MYVIM . '/var/tmp' )
    silent execute '!mkdir "'.$HOME.'\vimfiles\var\tmp"'
  endif
  if !filewritable( $MYVIM . '/var/undo' )
    silent execute '!mkdir "'.$HOME.'\vimfiles\var\undo"'
  endif

  set guifont=Consolas:h11
  set guioptions-=t
else
  let $MYVIM=$HOME.'/.vim'

  if !filewritable( $MYVIM . '/var/backup' )
    silent execute '!mkdir -p "'.$MYVIM.'/var/backup"'
  endif
  if !filewritable( $MYVIM . '/var/tmp' )
    silent execute '!mkdir "'.$MYVIM.'/var/tmp"'
  endif
  if !filewritable( $MYVIM . '/var/undo' )
    silent execute '!mkdir "'.$MYVIM.'/var/undo"'
  endif

  set guifont=Droid\ Sans\ Mono\ Slashed\ 10
endif

set backupdir=$MYVIM/var/backup//,.
set directory=$MYVIM/var/tmp//,.

set backup
set autowrite
" set hidden  -- autowrite vs hidden, haven't decided.

if has('persistent_undo')
  set undofile
  set undodir=$MYVIM/var/undo//,.
end


autocmd FileType text setlocal textwidth=78


" -- Perl stuff
function! PerlSettings ()
  setlocal keywordprg=perldoc\ -f
  setlocal makeprg=perl\ -c\ %\ $*
  setlocal errorformat=%m\ at\ %f\ line\ %l
endfunction

autocmd FileType perl call PerlSettings()

" preload templates into new buffers by file extension
" autocmd BuffNewFile * silent! 0r $MYVIM/templates/%:e.template

" strip trailing whitespace on save
" autocmd BufWritePre * :%s/\s+$//e

"let perl_fold = 1           "perl fold scanning is slow
let perl_include_pod = 1

" -- Gundo
" I prefer python3 on windows if I have to use it.
if on_windows == 1
  let g:gundo_prefer_python3=1
endif

" -- Tagbar
if on_windows == 1
  let g:tagbar_ctags_bin = 'C:\Users\mhoward\bin\ctags.exe'
endif

let g:tagbar_autoclose = 1
let g:tagbar_autofocus = 1
let g:tagbar_compact = 1

let g:tagbar_type_perl = {
    \ 'kinds' : [
        \ 'p:packages:1:0',
        \ 'e:extends',
        \ 'r:roles',
        \ 'c:constants:0:0',
        \ 'f:formats:0:0',
        \ 'a:attributes',
        \ 's:subroutines',
        \ 'l:labels',
    \ ],
    \ 'deffile' : '$MYVIM/ctags/perl.cnf'
\ }


" -- Unite
call unite#filters#matcher_default#use(['matcher_fuzzy'])
call unite#filters#sorter_default#use(['sorter_rank'])
let g:unite_source_history_yank_enable = 1

if executable('ag')
  let g:unite_source_grep_command = 'ag'
  let g:unite_source_grep_default_opts = '--nogroup --nocolor --column'
  let g:unite_source_grep_recursive_opt = ''
endif

" -- Airline
let g:airline#extensions#whitespace#enabled = 0


" Local stuff
try
  if on_windows == 1
    source ~/_vimrc.local
  else
    source ~/.vimrc.local
  endif
catch
endtry

if has('gui_running')
  set nu
  set bg=dark

  set columns=120 lines=40

  colorscheme solarized
else
  if &t_Co == 256
    colorscheme jellybeans
  end
end

mercurial