diff --git a/vimrc b/vimrc new file mode 100755 index 0000000..71f0ca4 --- /dev/null +++ b/vimrc @@ -0,0 +1,247 @@ +" 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 :