nmap <C-?> x nmap <C-H> X map <C-l> gqap map! <C-l> <ESC>gqapi map <F2> :w<CR> map! <F2> <ESC>:w<CR>i map <F3> ZZ map! <F3> <ESC>ZZ map <F4> :q!<CR> map! <F4> <ESC>:q!<CR> source ~/.vim.ispell map <C-k> :let @_=SpellCheck()<cr> map! <C-k> <ESC>:let @_=SpellCheck()<cr>i " No, it is not VI, it is VIM! Set this first, it is important. set nocompatible " Generic/interface settings "set nobackup " Do not make a backup before overwriting a file set showbreak=+\ " Precede continued screen lines set comments=b:#,:%,fb:-,n:>,n:)b:\"n:: " Comments may start with these chars: #%>": set noendofline " No <EOL> will be written for the last line in the file set equalprg=fmt " External program to use for "=" command set formatoptions=tcrq " How to do automatic formatting set keywordprg=man\ -k " Display man entries for `K' lookup "set lazyredraw " Do not update screen while executing macros set list listchars=tab:>_,trail:_,extends:+ " ,eol:$ " Show tabs, trailing spaces, long lines set matchpairs=(:),{:},[:],<:> " Matching pair characters set shortmess=ato " Overwrite message for writing a file with subsequent message set showmatch " When a bracket is inserted, briefly jump to the matching one set sidescroll=1 " The minimal number of columns to scroll horizontally set nostartofline " Keep curosr's column set suffixes= " Set a priority between files with almost the same name set timeout timeoutlen=3000 " Set timeout on mappings/keycodes to 3 seconds set viminfo='10 " Maximum number of previously edited files for which the marks are remembered set whichwrap=b,s,h,l,<,>,[,] " Wrap to the previous/next line on all keys set wildmenu " Command-line completion operates in an enhanced mode set wildmode=longest,list,list:full " Bash-vim wildcard behavior set nowrap " Do not visually wrap long lines - do not make it look like there are line breaks where there aren't set esckeys " show escape set hidden set novisualbell " I hate visual bell. set noerrorbells " I prefer a silent workspace. set fo=cqrt set ls=2 set textwidth=72 " Windows/buffers settings set hidden " Allow to switch between buffers/windows when the buffer was modified set laststatus=2 " Always show status line set ruler " Show the line and column number of the cursor position set showcmd " Show (partial) command in status line set splitbelow " Put the new window below the current one set title " Set title to the value of 'titlestring' or to "VIM - filename" set winheight=4 " At least 4 lines for current window set winminheight=0 " Allow zero-height windows set ts=4 " Text settings set autowrite " automatically save. set ttymouse=xterm " use mouse set noautoindent " Do not copy indent from current line when starting a new line set number " set number of lines. set backspace=2 " Backspace over indent, eol, start set expandtab " Do not insert tab when <Tab> was pressed - insert a number of spaces set nojoinspaces " Do not insert two spaces after a '.', '?' and '!' with a join command set notextmode " Don't append bloody carriage returns set shiftwidth=3 " Number of spaces to use for each step of (auto)indent set softtabstop=3 " Number of spaces that a <Tab> counts for while performing editing operations set tabstop=8 " Number of spaces that a <Tab> in the file counts for set textwidth=72 " Maximum width of text that is being inserted. A longer line will be broken. Zero disables this. " Search settings "set ignorecase " Ignore case in search patterns set incsearch " Incremental search. Beware! Only for fast terminals set nohlsearch " Stop the search highlighting " for 2html let html_number_lines = 0 let html_use_css = 1 " Comment: Run from a Unix shell " Comment: " for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done " " TERMINALS, MICE and COLORS "set ttyfast " Indicates a fast terminal connection set mouse=ar " Use mouse in all modes, plus hit-return " Set beahviour to xterm, not mswin behave xterm if has("gui_running") " set background=Black else if (&term =~ "term") || (&term =~ "rxvt") || (&term =~ "vt100") || (&term =~ "screen") " Use the clipboard register '*' for all yank, delete and put operations. " This allows to use mouse for copy/paste in local xterm, " but prevents to save the unnamed register between sessions set clipboard=unnamed if has ("terminfo") " set t_Co=8 " set t_Sf=^[[3%p1%dm " set t_Sb=^[[4%p1%dm set t_Co=16 set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m " ^ this must be real Escape else set t_Co=8 set t_Sf=^[[3%dm set t_Sb=^[[4%dm endif endif " Set background to dark to have nicer syntax highlighting. set background=dark endif " And of course, the ever important syntax highlighting " This has to go last because of the if stuff above syntax on " Status line is bright white on blue; please note fg/bg is reverse for term mode highlight StatusLine cterm=bold ctermfg=white ctermbg=blue " AUTOCOMMANDS " enable filetype detection: filetype on " Remove all autocommands. "autocmd! " When editing a file, always jump to the last cursor position autocmd BufReadPost * if line("'\"") | exe "normal `\"" | endif " Set options for python files autocmd FileType python set autoindent smartindent \ cinwords=class,def,elif,else,except,finally,for,if,try,while \ makeprg=compyle4vim.py \ errorformat=%E\ \ File\ \"%f\"\\,\ line\ %l\\,\ column\ %c,%C%m | \ execute "autocmd BufWritePost " . expand("%") . " call DoPython()" " Compile (clearing *.cgi[co] files after compilation) " and if it is script, make it executable function DoPython() !compyle % if expand("%:e") != "py" !rm -f %[co] endif if getline(1) =~ "^#!" !chmod +x % endif endfunction " Set options for text/html files autocmd BufReadPre *.txt,*README*,*.htm*,/tmp/pico.*,mutt-* set textwidth=75 autocmd BufReadPre /tmp/pico.*,mutt-* set filetype=mail autocmd FileType css set smartindent " in makefiles, don't expand tabs to spaces, since actual tab characters are " needed, and have indentation at 8 chars to be sure that all indents are tabs " (despite the mappings later): autocmd FileType make set noexpandtab shiftwidth=8 " I like highlighting strings inside C comments let c_comment_strings=1 augroup gzip " Remove all gzip autocommands au! " Enable editing of gzipped files " read: set binary mode before reading the file " uncompress text in buffer after reading " write: compress file after writing " append: uncompress file, append, compress file autocmd BufReadPre,FileReadPre *.gz set bin autocmd BufReadPost,FileReadPost *.gz let ch_save = &ch|set ch=2 autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip autocmd BufReadPost,FileReadPost *.gz set nobin autocmd BufReadPost,FileReadPost *.gz let &ch = ch_save|unlet ch_save autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r autocmd FileAppendPre *.gz !gunzip <afile> autocmd FileAppendPre *.gz !mv <afile>:r <afile> autocmd FileAppendPost *.gz !mv <afile> <afile>:r autocmd FileAppendPost *.gz !gzip <afile>:r augroup END augroup bzip2 " Remove all bzip2 autocommands au! " Enable editing of bzipped files " read: set binary mode before reading the file " uncompress text in buffer after reading " write: compress file after writing " append: uncompress file, append, compress file autocmd BufReadPre,FileReadPre *.bz2 set bin autocmd BufReadPost,FileReadPost *.bz2 let ch_save = &ch|set ch=2 autocmd BufReadPost,FileReadPost *.bz2 '[,']!bunzip2 autocmd BufReadPost,FileReadPost *.bz2 set nobin autocmd BufReadPost,FileReadPost *.bz2 let &ch = ch_save|unlet ch_save autocmd BufReadPost,FileReadPost *.bz2 execute ":doautocmd BufReadPost " . expand("%:r") autocmd BufWritePost,FileWritePost *.bz2 !mv <afile> <afile>:r autocmd BufWritePost,FileWritePost *.bz2 !bzip2 <afile>:r autocmd FileAppendPre *.bz2 !bunzip2 <afile> autocmd FileAppendPre *.bz2 !mv <afile>:r <afile> autocmd FileAppendPost *.bz2 !mv <afile> <afile>:r autocmd FileAppendPost *.bz2 !bzip2 <afile>:r augroup END " MAPPINGS " Make # keep it's normal indentation so it works as a comment inoremap # X^H# " mappings: " map <C-A> <Home> " map <C-E> <End> " map <C-Z> :shell<CR> " Make shift-insert work like in Xterm " map <S-Insert> <MiddleMouse> " map! <S-Insert> <MiddleMouse> if has("gui_running") " Send current file to a browser map ,b :!mozilla -remote 'openURL(file://%:p,new-window)'<Bar><Bar>mozilla 'file://%:p'&<CR> " Send visual block to a browser vmap ,B "*y:!mozilla -remote 'openURL(<C-R>*)'<Bar><Bar>mozilla '<C-R>*'&<CR> else " send current file to links map ,b :set isk+=:,/,.,~<cr>:!links %<cr>:set isk-=:,/,.,~<cr> " send link to links map ,B :set isk+=:,/,.,~<cr>:!links <cword><cr>:set isk-=:,/,.,~<cr> endif autocmd BufRead /tmp/mutt* :source ~/.vim.mail