" sjs's .vimrc " " created: 2004.02.08 " updated: Tue 10 Nov 2009 22:18:25 PST " {{{ * Global Settings set nocompatible " we should set this first since it resets things autocmd! filetype plugin on " detect the type of file filetype indent on filetype on "set autowrite " write changed files when :make is executed set cf " enable error files and error jumping set clipboard+=unnamed " put yanks/etc on the clipboard set history=1000 " How many lines of history to remember set path=~/,.,, set cdpath=~/,., set nobackup " create backup files "set backupcopy=yes " copy the file, then overwrite the original " }}} " {{{ * Plugin Settings "let spell_auto_type="tex,mail,text,html,cvs,human,none" "let spell_markup_ft=",html,php,xhtml,tex,mail,human,none," "let spell_executable="aspell" " }}} " {{{ * Colours and Fonts set background=dark " we are using a dark background colorscheme murphy " bright, maybe too red though set guifont=Bitstream\ Vera\ Sans\ Mono\ 12 " for some reason fg and bg are inverted! "autocmd FileType mail highlight Search ctermbg=yellow ctermfg=black term=reverse term=underline "autocmd FileType mail highlight statusline ctermbg=0 ctermfg=2* " }}} " {{{ * User Interface syntax on " syntax highlighting is a Good Thing(tm) set backspace=2 " make backspace work normal (=eol,indent,start) set gdefault " assume the /g flag on :s substitutions set hidden " you can change buffer without saving set smartcase " ignore case unless uppercase letters in search set iskeyword=@,48-57,_,- " chars which are parts of words " @ = a-z,A-Z (really means isalpha() is true) set lz " do not redraw while running macros (much faster) (LazyRedraw) set mouse=a " use mouse everywhere "set number " turn on line numbers set report=0 " tell us when anything is changed via :... set shortmess=aItr " shortens messages to avoid 'press a key' prompt set sidescroll=10 " show a context of 10 cols when scrolling horiz set whichwrap+=<,>,h,l,~,[,] " backspace and cursor keys wrap to set wildmenu " turn on wild menu set wildmode=list:longest,full " complete longest match, then in full set comments+=b:\" " treat lines starting with a quote mark as comments (for `Vim' files) set incsearch " BUT do highlight as you type your search phrase set nohlsearch " do not highlight searched for phrases set laststatus=2 " always show the status line " this is from ciaranm's webpage, " http://dev.gentoo.org/~ciaranm/docs/vim-guide if (&termencoding == "utf-8") || has("gui_running") if v:version >= 700 set listchars=eol:$,tab:>-,trail:.,extends:>,nbsp:\u2017 else set listchars=eol:$,tab:>-,trail:.,extends:> endif else if v:version >= 700 set listchars=eol:$,tab:>-,trail:.,extends:>,nbsp:_ else set listchars=eol:$,tab:>-,trail:.,extends:> endif endif set nolist set matchpairs+=<:> " have % bounce between angled brackets, as well as other kinds: set showmatch " show matching brackets set showmode " show mode in status line set so=10 " Keep 10 lines (top/bottom) for scope set statusline=%F%m%r%h%w\ (%L\l)\ --\ Buf:%-3.3n\ Fmt:%{&ff}\ %=\ [ASCII=\%03.3b,\ 0x\%02.2B]\ %04l,%03v(%p%%) "set statusline=\ (%n)\ %F\ [%{&ff}%M%R%H%W\ %L\ lines]%=%l,%c\ --%p%%--\ " }}} " {{{ * Text Formatting "--------------------------------- set autoindent set formatoptions+=ln " see :h formatoptions set expandtab " spaces, not tabs set nowrap " don't wrap lines set tabstop=4 " tab spacing set shiftwidth=4 set smarttab " use tabs at the start of a line, spaces elsewhere " }}} " {{{ * Folding set foldenable " Turn on folding set foldlevel=100 " Don't autofold anything (but I can still fold manually) set foldmethod=marker " Make folding marker sensitive set foldminlines=3 " don't fold less than 3 lines on me "set foldopen-=search " don't open folds when you search into them set foldopen-=undo " don't open folds when you undo stuff " }}} " {{{ * File Explorer let g:explVertical=0 " should I split verticially let g:explWinSize=35 " width of 35 pixels " }}} " {{{ * Win Manager let g:winManagerWidth=35 " How wide should it be( pixels) let g:winManagerWindowLayout = 'FileExplorer,TagsExplorer|BufExplorer' " What windows should it " }}} " {{{ * CTags let Tlist_Ctags_Cmd = '/usr/bin/ctags' " Location of ctags let Tlist_Sort_Type = "name" " order by let Tlist_Use_Right_Window = 1 " split to the right side of the screen set tags=./tags,../tags,../../tags " }}} " {{{ * Minibuf let g:miniBufExplTabWrap = 1 " make tabs show complete (no broken on two lines) " }}} " {{{ * Mappings " right arrow (normal mode) switches buffers (excluding minibuf) "map :MBEbn " left arrow (normal mode) switches buffers (excluding minibuf) "map :MBEbp " up arrow (normal mode) brings up a file list "map :Sexplore " down arrow (normal mode) brings up the tag list "map :Tlist " [<-> by default is like k] noremap - " make enter insert a blank line nnoremap Oj " ctrl-n to cycle forwrd through files "nnoremap :next nnoremap :bnext " ctrl-p to cycle backwards "nnoremap :prev nnoremap :bprev " control-c comments block vmap :s/^/#/g " control-x uncomments block vmap :s/^#//g " have the usual indentation keystrokes still work in visual mode: vnoremap vnoremap > vmap vmap " have prompt for a help topic, rather than displaying the introduction " page, and have it do this from any mode: nnoremap :help vmap omap map! " run current file through python map :w:!python % map :w:!xterm -e python -i % & " miniBufExplorer settings for good key mappings! let g:miniBufExplMapWindowNavVim = 1 "let g:miniBufExplMapWindowNavArrows = 1 let g:miniBufExplMapCTabSwitchBuffs = 1 " Tip: 108 Toggle a fold with a single keystroke {{{ " Toggle fold state between closed and opened. " Based on Vim tip: " http://www.vim.org/tips/tip.php?tip_id=108 " Explanation: " - 'normal! za' toggles folds. " - 'silent!' allows to avoid error message when current line doesn't delong " " to fold. " - (foldlevel('.')?'':'l') adds forward moving only if current line doesn't " " belong to fold. "nnoremap :exe 'silent! normal! za'.(foldlevel('.')?'':'l') "nnoremap :exe 'silent! normal! zM'.(foldlevel('.')?'':'l') " changed to just toggle with 'za' nnoremap :exe 'silent! normal! za' nnoremap :exe 'silent! normal! zM'.(foldlevel('.')?'':'l') " }}} " }}} " * Autocommands {{{ "----------------------- " cd to directory containg current buffer (awesome!) "autocmd BufEnter * execute ":lcd '" . expand("%:p:h") . "'" "autocmd BufEnter * :syntax sync fromstart " ensure every file does syntax highlighting (full) "let g:detectindent_preferred_expandtab = 1 "let g:detectindent_preferred_indent = 4 "autocmd BufReadPost * :DetectIndent "autocmd FileType c setlocal formatoptions+=ro autocmd FileType c setlocal si foldmethod=indent foldminlines=1 foldlevel=100 foldnestmax=1 "autocmd FileType c,cpp,slang setlocal cindent autocmd FileType css,php setlocal foldmethod=indent autocmd FileType css,perl,php setlocal smartindent autocmd FileType css,html,php,xml setlocal formatoptions+=tl autocmd FileType css,html,php,xml setlocal noexpandtab tabstop=4 autocmd FileType asm,make setlocal noexpandtab tabstop=8 shiftwidth=8 autocmd FileType eclectic setlocal syntax=sh autocmd FileType sh setlocal si fdm=marker fdl=5 "autocmd FileType python source ~/.vim/scripts/python.vim autocmd FileType python setlocal sw=4 ts=4 si fdm=indent autocmd FileType python set complete+=k/home/sjs/hack/pydiction/pydiction autocmd FileType mail :nmap :w:!aspell -e -c %:e autocmd FileType mail setlocal nonu noai nosi et tw=72 comments=b:#,:%,fb:-,n:>,n:) sm! fo+=a autocmd FileType mail highlight SpellErrors ctermfg=red ctermbg=black cterm=underline term=reverse " }}} " * Informational abbrevs {{{ "-------------------------------- iab xdate =strftime("%d/%m/%y %H:%M:%S") iab xname Sami Samhuri iab xschool University of Victoria " }}} " vim: set fdm=marker fdl=3 foldminlines=3 :