annotate vim/.vimrc @ 16:b8049010198a

Changes to .vimrc after reading Practical Vim.
author Brian Neal <bgneal@gmail.com>
date Sun, 29 Dec 2013 18:22:38 -0600
parents d428a965f322
children 33114558b770
rev   line source
bgneal@0 1 set nocompatible
bgneal@0 2 "source $VIMRUNTIME/vimrc_example.vim
bgneal@0 3 "source $VIMRUNTIME/mswin.vim
bgneal@0 4 "behave mswin
bgneal@0 5
bgneal@0 6 set nobackup
bgneal@0 7 set tabstop=3
bgneal@0 8 set shiftwidth=3
bgneal@0 9 set backspace=indent,eol,start
bgneal@0 10 set expandtab
bgneal1@9 11 set textwidth=79
bgneal@0 12 set number
bgneal@0 13 set ruler
bgneal@0 14 set history=1000
bgneal@0 15 set encoding=utf-8
bgneal@4 16 set showcmd
bgneal@0 17
bgneal@0 18 " CtrlP related settings
bgneal1@9 19 " set wildignore+=.git\*,.hg\*,.svn\*,*.d,*.dbo,*.o,*.ti,*.ii,*.swp,*.pyc
bgneal@4 20 set wildignore+=*/.git/*,*/.hg/*,*/.svn/*
bgneal@4 21 let g:ctrlp_working_path_mode = 2
bgneal@0 22
bgneal@0 23 " This allows % to toggle on if/elsif/else/end, XML tags, & more
bgneal@0 24 runtime macros/matchit.vim
bgneal@0 25
bgneal@0 26 " These two options make /-style searching case-sensitive only if there
bgneal@0 27 " is a capital letter in the search expression.
bgneal@0 28 set ignorecase
bgneal@0 29 set smartcase
bgneal@0 30
bgneal@0 31 " Sets the terminal title when run in an xterm
bgneal@0 32 set title
bgneal@0 33
bgneal@0 34 " This puts more context around the cursor when scrolling
bgneal@0 35 set scrolloff=3
bgneal@0 36
bgneal1@9 37 let g:netrw_sort_sequence = "[\/]$,*,\.bak$,\.o$,\.info$,\.swp$,\.obj$"
bgneal@0 38
bgneal@0 39 syntax on
bgneal@0 40 filetype on
bgneal@0 41 filetype plugin on
bgneal@0 42 filetype indent on
bgneal@0 43 set hlsearch
bgneal@0 44 set incsearch
bgneal@0 45
bgneal@0 46 " highlight trailing spaces
bgneal@0 47 let c_space_errors = 1
bgneal1@9 48 let python_space_error_highlight = 1
bgneal@0 49
bgneal@2 50 set background=dark
bgneal@2 51 colorscheme peaksea2
bgneal@0 52
bgneal@0 53 " shortcut for word completion in insert mode
bgneal@0 54 imap <S-Tab> <C-n>
bgneal@0 55
bgneal@0 56 " buffer next and previous commands
bgneal@16 57 " TODO: find a better mapping
bgneal@16 58 " TODO: nnoremap <Tab> :bnext<CR>
bgneal@16 59 " TODO: nnoremap <S-Tab> :bprevious<CR>
bgneal@0 60
bgneal@0 61 " Remove extra trailing spaces
bgneal@0 62 nnoremap <F2> :%s/\s\+$//<CR>
bgneal@0 63
bgneal@4 64 " setlocal spell spelllang=en_us
bgneal@0 65
bgneal@16 66 let mapleader="\\"
bgneal@6 67
bgneal1@9 68 " ctags support
bgneal1@9 69
bgneal1@9 70 function BgnCtags()
bgneal1@9 71 let d = fnamemodify(findfile("root.dir", ";"), ":p:h")
bgneal1@9 72 let tags = d . "\\tags"
bgneal1@9 73 let s = "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --exclude=Coe_prune --exclude=Opnet --languages=-all --languages=+c,c++,python -f " . tags . " " . d
bgneal1@9 74 echo s
bgneal1@9 75 call system(s)
bgneal1@9 76 endfunction
bgneal1@9 77
bgneal1@9 78 nnoremap <F8> :call BgnCtags()<CR>
bgneal1@9 79 nnoremap <F9> :tn<CR>
bgneal1@9 80 nnoremap <F10> :tp<CR>
bgneal1@9 81 nnoremap <F11> :tj<CR>
bgneal1@9 82 set tags=tags;/
bgneal1@9 83
bgneal1@9 84 " Trial settings
bgneal1@9 85 set wildmenu
bgneal1@9 86 set wildmode=list:longest
bgneal1@9 87 set laststatus=2
bgneal1@9 88 set gdefault
bgneal1@9 89 set showmatch
bgneal@10 90 set formatoptions=tcqrn1
bgneal@16 91 nnoremap <leader>/ :noh<CR>
bgneal@16 92 nnoremap / /\v
bgneal@16 93 vnoremap / /\v
bgneal1@9 94
bgneal1@9 95 " Splitting windows and moving around between them:
bgneal@16 96 nnoremap <leader>v <C-w>v<C-w>l
bgneal1@9 97 nnoremap <C-h> <C-w>h
bgneal1@9 98 nnoremap <C-j> <C-w>j
bgneal1@9 99 nnoremap <C-k> <C-w>k
bgneal1@9 100 nnoremap <C-l> <C-w>l
bgneal1@9 101
bgneal1@9 102 " Absolute vs relative line numbers:
bgneal@16 103 nnoremap <leader>na :set norelativenumber<CR>:set number<CR>
bgneal@16 104 nnoremap <leader>nr :set relativenumber<CR>
bgneal1@9 105
bgneal1@9 106 " Format paragraph
bgneal@16 107 nnoremap <leader>p gqip
bgneal1@9 108
bgneal1@11 109 function BgnSwitchPart()
bgneal1@11 110 python << EOF
bgneal1@11 111 import vim, os.path, sys
bgneal1@11 112 fname = vim.current.buffer.name
bgneal1@11 113 base, ext = os.path.splitext(fname)
bgneal1@11 114 headers = ['.h', '.hxx']
bgneal1@11 115 impls = ['.cpp', '.cxx', '.cc', '.c']
bgneal1@11 116 new_exts = None
bgneal1@11 117 if ext in headers:
bgneal1@11 118 new_exts = impls
bgneal1@11 119 elif ext in impls:
bgneal1@11 120 new_exts = headers
bgneal1@11 121
bgneal1@11 122 if new_exts:
bgneal1@11 123 for ext in new_exts:
bgneal1@11 124 new_fname = base + ext
bgneal1@11 125 if os.path.exists(new_fname):
bgneal1@11 126 vim.command(":e %s" % new_fname)
bgneal1@11 127 break
bgneal1@11 128 else:
bgneal1@11 129 sys.stderr.write("Could not find other part\n")
bgneal1@11 130 else:
bgneal1@11 131 sys.stderr.write("Uknown extension %s" % ext)
bgneal1@11 132 EOF
bgneal1@11 133 endfunction
bgneal1@11 134
bgneal@16 135 nnoremap <leader>s :call BgnSwitchPart()<CR>
bgneal1@11 136
bgneal@6 137 " Pathogen support
bgneal@6 138 call pathogen#infect()