From: Aldric Giacomoni <"aldric[removeme]"@...> Date: 2009-03-25T11:41:54+09:00 Subject: Re: Share your vimrc David Lee wrote: > here's mine, sans the stuff I've cargo-culted and don't understand. > most of it's kinda commented - it's useful. > > seen dotfiles.org? > > " This must be first, because it changes other options as a side > effect. > set nocompatible > > syntax on > set bg=dark > set shiftwidth=2 > set tabstop=2 > set softtabstop=2 " sts > set notextmode " no - I am using Vim on UNIX! > set textwidth=0 " Don't wrap words by default > set title " Permet de voir le tit. du doc. crt. > ds les XTERM > set viminfo='1000,/1000,:1000,<1000,@1000,n~/.viminfo > " What info to store from an editing > session > " in the viminfo file; can be used at > next session. > set sessionoptions=buffers,folds,localoptions,options,tabpages,help > set whichwrap=<,>,[,] " > set wildchar= " the char used for "expansion" on the > command line > " default value is "" but I > prefer the tab key: > set wildmenu " Completion on the command line shows > a menu > set wildmode=longest,full > set winminheight=0 " Minimum height of VIM's windows > opened > set mousefocus > set wrapmargin=1 > " set nowritebackup > set foldmethod=marker > set noequalalways > set eadirection= > > set cpoptions-=C " enable commands that continue on the > next line > " use ctrl-n ctrl-n instead of ctrl-x ctrl-k > set complete-=k complete+=k > set diffopt=filler,context:5,iwhite > set fillchars+=diff:\ > > set makeprg=LC_ALL=C\ make\ M=1 > > exe "set path=." . system("echo | cpp -v 2>&1 | grep '^ .*/include' | > tr -d \"\n\" | tr \" \" \",\"") > set path+=.;/ > > > set tags=tags;/,.tags;/,TAGS;/ > > set cinoptions= > set cinoptions+=,t0 " type on the line before the functions > is not idented > set cinoptions+=,:2,=2 " indent case ...: of 2 from the switch > { > set cinoptions+=,(0,W4 " indent in functions ( ... ) when it > breaks > set cinoptions+=,g2,h2 " indent C++ scope of 2, and the > members from 2 from it > "set cinoptions+=l1 " align closing brace with the case > "set cinoptions+=b1 " align break; with case ...: > > > set expandtab " tabs -> spaces > set autoread " reload unchanged files silently > " set clipboard=unnamed " copy/paste to global clipboard > set hidden " allow to cycle and hide modified > buffers > set nobackup " Don't keep a backup file > " set backupcopy=auto,breakhardlink > " set swapsync= " don't force disk sync for swap files > set esckeys " allow usage of curs keys within > insert mode > set autoindent > set number > set showmode > set hlsearch > set incsearch > " allow backspacing over everything in insert mode > set backspace=indent,eol,start > set nowrap > " set mousehide > set timeout > set ttimeoutlen=10 > set timeoutlen=500 " set timout for esc to 50ms > set listchars=tab:\ \ ,trail:-,extends:>,precedes:< > set list > set joinspaces " insert two spaces after a period > with every joining of lines. > " This is very nice! > set ttyfast > set magic " Use some magic in search patterns? > Certainly! > set modeline " Allow the last line to be a modeline > - useful when > " the last line in sig gives the > preferred text-width > " for replies. > set lazyredraw " [VIM5]; do not update screen while > executing macros > set modelines=5 > set pastetoggle= > > set report=0 " show a report when N lines were > changed. > " report=0 thus means "show all > changes"! > set laststatus=2 " show status line? Yes, always! > > " set the mouse to work in the console > set mouse=a > set history=1000 " keep n lines of command line history > set ruler " show the cursor position all the time > set showcmd " display incomplete commands > set incsearch " do incremental searching > set ignorecase smartcase " default to case insensitive unless caps in > regex > set backup " keep a backup file > set backupdir=/tmp/vimbackup,/tmp,~/.vim/backup,~/vim " and keep it > out of the way > set directory=/tmp//,/tmp,~/.vim/backup//,~/vim// " same for swapfiles > " Don't use Ex mode, use Q for formatting > " reflow para with Q > nnoremap Q gqap > " reflow selected with Q in visual mode > vnoremap Q gq > imap :gqip > map :gqip > set statusline=[\ %f%m\ %r%y\ %=\ hex:%B\ \ %l,%c%V\ \ %P\ ] > set shortmess=at " Kind of messages to show. > Abbreviate them all! > " New since vim-5.0v: flag 'I' to > suppress "intro message". > set scrolloff=2 " context > set showcmd " Show current uncompleted command? > Absolutely! > set showmatch " Show the matching bracket for the > last ')'? > set showmode " Show the current mode? > YEEEEEEEEESSSSSSSSSSS! > set > suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc,.cmi,.cmo > " Suffixes to ignore in file > completion > > " overwrite those annoying commands I always mistype > :command W w > :command Q q > > ""map non-insert motion keybindings to work in insert mode when > holding CTRL > "imap " this interferes with backspace ... so the rest > can go too > "imap > "imap > "imap > > """"" WINDOW MANAGEMENT > " > " fast switching / maximization of window panes > map j_ > map k_ > " and vsplits > map h > map l > " and lets make these all work in insert mode too ( makes next > cmd > " happen as if in command mode ) > imap > " use - and + to resize horizontal splits > map - - > map + + > " and for vsplits with alt-< or alt-> > " why isn't this working? > map > > > map < > " make min winsize just the filename line > " set winminheight=2 > > " emacs style keybindings for motion > " start > cnoremap > " end > cnoremap > > > "" vim 7 omnicompletion > " doesn't quite work > if has("autocmd") && exists("omnifunc") > autocmd Filetype * > if &omnifunc == "" | > setlocal omnifunc=syntaxcomplete#Complete | > endif > endif > > " open new files using v from explorer on the right > let g:netrw_altv = 1 > > map :tabfirst > map :tablast > map :tabp > map :tabn > map :!irb > map :!ri > map :!bash > > " look upwards recursively for tags files > set tags=tags;/ > > " snippets and shortcuts > imap ;) ()i > imap ;> <>i > imap ;] []i > imap ;} {}i > imap #{ #{}i > > "" highlighting rules > " > "highlight RedundantSpaces ctermbg=yellow guibg=yellow > "match RedundantSpaces /\s\+$\| \+ze\t/ > " > " make hlsearch show stuff up on a nice red background > hi Search term=reverse ctermbg=Red ctermfg=White guibg=Red > guifg=White > > map :set number! > map :set hlsearch! > > " Only do this part when compiled with support for autocommands. > if has("autocmd") > > > autocmd BufRead *.as set filetype=actionscript > > " Enable file type detection. > " Use the default filetype settings, so that mail gets 'tw' set to > 72, > " 'cindent' is on in C files, etc. > " Also load indent files, to automatically do language-dependent > indenting. > " actually don't because it's usually fucking stupid > filetype plugin indent off > > " Put these in an autocmd group, so that we can delete them easily. > augroup vimrcEx > au! > > " For all text files set 'textwidth' to 78 characters. > autocmd FileType text setlocal textwidth=78 > > " When editing a file, always jump to the last known cursor > position. > " Don't do it when the position is invalid or when inside an event > handler > " (happens when dropping a file on gvim). > autocmd BufReadPost * > \ if line("'\"") > 0 && line("'\"") <= line("$") | > \ exe "normal g`\"" | > \ endif > > augroup END > > endif " has("autocmd") > > > " Anything after this is possibly dubious > > " }}} > " {{{ vim 7 settings > > if version >= 700 > " set autochdir " autochdir... change dir on file > edit / open. > set virtualedit=onemore " Yes I want to be able to be "on \n" > set spelllang=en_au,en_us > set pumheight=32 > > " make work in popup > inoremap =pumvisible() ? "\C-Y>" : "\cr>" > else > au BufEnter * :lcd %:p:h > endif > > " }}} > " {{{ Window magic > > function! DeleteBuffer() > let bid = bufnr("%") > bnext > exe "bdel " . bid > redraw > endfunction > > map d :call DeleteBuffer() > "map k :bd > map g :bo cw 8 > > " }}} > " {{{ Mappings > > " {{{ Tab Key magic ... > vmap >gv > vmap > map + :cn > map - :cp > map :cn > map :cp > > map Q gq > > noremap :set mouse=a > noremap :set mouse=h > noremap :source ~/.vimrc > > inoremap mzviwU`z > noremap :set ai!:set ai? > inoremap a > > noremap :bp > inoremap :bp > noremap :bn > inoremap :bn > noremap :make!:bo cw 8 > inoremap :make!:bo cw 8 > noremap :make clean > inoremap :make clean > > " }}} > " {{{ FTYPES > > if has("autocmd") > filetype plugin indent on > syntax on > > au BufReadPost * > \ if line("'\"") > 0 && line("'\"") <= line("$") | > \ exe "normal g`\"" | > \ endif > > au VimLeave * mksession! ~/.cache/session.vim > > au FileType debchangelog normal zO > > au FileType javascript setlocal cindent tw=78 iskeyword+=$ > au FileType actionscript setlocal cindent tw=78 iskeyword+=$ > noignorecase ff=dos > au FileType mail setlocal noet iskeyword+=- tw=72 > > au FileType c,cpp setlocal tw=78 noignorecase "fo-=ro > au FileType ocaml,acute,omlet setlocal sw=2 sts=2 tw=78 > au FileType php setlocal et fo+=ro tw=78 indentexpr= cin > au FileType python setlocal foldmethod=indent foldnestmax=1 > > au FileType diff setlocal nofoldenable > > au FileType html,xhtml,xml setlocal sw=2 > au FileType mail setlocal spell > > " make error list special > au BufRead quickfix setlocal nobuflisted nowrap number > > au FileType svn setlocal spell tw=76 > au FileType git setlocal spell tw=76 > > let ocaml_noindent_let=1 > let git_diff_spawn_mode=2 > let git_diff_opts = "-C -C -M -w -b" > let c_gnu=1 > let c_space_errors=1 > let c_no_curly_error=1 > > let g:bufExplorerFindActive=0 > let g:bufExplorerSplitOutPathName=1 > let g:bufExplorerShowRelativePath=0 > let g:bufExplorerSortBy='fullpath' > > let g:is_bash=1 > let g:sh_fold_enabled=1 > > let g:debchangelog_fold_enable = 1 > let g:debcontrol_fold_enable = 1 > endif " has ("autocmd") > > " }}} > " {{{ PLUGINS > > runtime macros/matchit.vim > "runtime macros/justify.vim > > runtime ftplugin/man.vim > nmap ! :exe "Man" expand("") > > " }}} > " {{{ COLORS, GUI and FOLDING > > " set background=light > hi clear > if exists("syntax_on") > syntax reset > endif > > if has("gui_running") > " set guioptions=eit > " set guifont=terminus > " set guifont="bitstream vera monospace":11 > set guicursor=a:blinkon0 > set background=dark > " set guifont="bitstream vera monospace":11 > set guifont=ProggyCleanTT\ 12 > > colorscheme davelee > > fun! GuiTabLabel() > let label = '' > let bufnrlist = tabpagebuflist(v:lnum) > > " Append the number of windows in the tab page if more than > one > let wincount = tabpagewinnr(v:lnum, '$') > let label .= wincount > > " Add '[*]' if one of the buffers in the tab page is modified > for bufnr in bufnrlist > if getbufvar(bufnr, "&modified") > let label .= '[*]' > break > endif > endfor > > > if exists("t:tabname") > return t:tabname . ': ' . label > else > return label . '[' . bufname(bufnrlist[tabpagewinnr > (v:lnum) - 1]) .']' > endif > endf > set guitablabel=%{GuiTabLabel()} > endif > > " Custom > hi def link htmlTag htmlStatement > hi def link htmlEndTag htmlStatement > > " }}} > dotfiles is -awesome-. Thanks!