"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Behaviour. " " All our scripts and files are here. if filereadable(expand("~/devel/scripts/vim/vimrc")) set runtimepath+=~/devel/scripts/vim endif " Set 'nocompatible' to ward off unexpected things that your distro might " have made, as well as sanely reset options when re-sourcing .vimrc set nocompatible " Line ending is UNIX. set fileformat=unix " Swap files go here. "set directory="~/tmp,." console version complains all the time. " Don't backup files. set nobackup "set backupdir="~/tmp,." git commit doesn't work. " Try to set up UTF-8 encoding. if has("multi_byte") if &termencoding == "" let &termencoding = &encoding endif set encoding=utf-8 setglobal fileencoding=utf-8 "setglobal bomb set fileencodings=ucs-bom,utf-8,latin1 endif " Make tabes to be equal to 4 space chars. set tabstop=4 " Number of spaces a counts. If different from tabstop a combination of " tabs and spaces will be inserted. set softtabstop=4 " For indentation shift by 4 chars. set shiftwidth=4 " When on insert shiftwidth space in front of line. When off inserts " blanks according to softtabstop. set smarttab " Don't expand tabs. set noexpandtab if has('autocmd') " Unset expandtab for make files in any case. autocmd FileType make setlocal noexpandtab " Set expandtab for python files in any case. autocmd FileType python setlocal expandtab endif " Attempt to determine the type of a file based on its name and possibly its " contents. Use this to allow intelligent auto-indenting for each filetype, " and for plugins that are filetype specific. filetype indent plugin on " When opening a new line and no filetype-specific indenting is enabled, keep " the same indent as the line you're currently on. Useful for READMEs, etc. set autoindent " Allow backspacing over autoindent, line breaks and start of insert action set backspace=indent,eol,start " Stop certain movements from always going to the first character of a line. " While this behaviour deviates from that of Vi, it does what most users " coming from other editors would expect. set nostartofline " Try to not cross 80 char boundary. set textwidth=80 " Existing long lines are not broken. set formatoptions+=l " Auto-wrap comments using textwidth. set formatoptions=cq " Insert comment leader if is hit in insert mode or 'o' in Normal mode. set formatoptions+=ro "set formatoptions-=o " don't autoformat on 'o' e.g. comment wrapping " " C++ oriented. " "do not auto insert single line comments set comments-=:// " Auto-insert multi-line comment continuations set comments+=f:// " Do not indent after namespace XX{ set cino+=N-s " Match open-bracket indentation when breaking parameter lists over multiple " lines. set cino+=(0 set viminfo='20,\"50 " read/write a .viminfo file, don't store more " than 50 lines of registers let g:netrw_preview = 1 " netrw open window to the right let g:netrw_browse_split = 3 " open in a tab set ttyfast "tf "smooths redraw by using more bandwidth "set sessionoptions-=options "show shortmessages "set shortmess+=atIW " Set timeout for detecting command key sequence set timeoutlen=400 "set autoread "update file modified outside of vim " Quickly time out on keycodes, but never time out on mappings set notimeout ttimeout ttimeoutlen=200 " Use to toggle between 'paste' and 'nopaste' "set pastetoggle= """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Display " " wrap text at window edge without modifying buffer set nowrap " Scroll this much chars when scrolled horizontally. set sidescroll=1 " break at a suitable character (as in breakat) "set linebreak " Begin scrolling this lines from window edge. set scrolloff=0 " Set the command window height to 2 lines, to avoid many cases of having to " press to continue" set cmdheight=2 " Always display the status line, even if only one window is displayed set laststatus=2 " Display the cursor position on the last line of the screen or in the status " line of a window if exists('&ruler') set ruler endif " Instead of failing a command because of unsaved changes, raise a dialogue " asking if you wish to save changed files. if exists('&confirm') set confirm endif " Use visual bell instead of beeping when doing something wrong if exists('&visualbell') set visualbell " And reset the terminal code for the visual bell. If visualbell is set, and " this line is also included, vim will neither flash nor beep. If visualbell " is unset, this does nothing. set t_vb= endif " Display line numbers on the left if exists('&number') set number endif " Turn on spell check. if exists("+spell") set spell endif " Show 80th column. if exists("+colorcolumn") set colorcolumn=+1 " color textwidth+1-th line endif " Show command-line completion above the command line. set wildmenu " wildmenu ignore list set wildignore=*.o,*.obj,*.bak,*.exe,*.d,*.dd " Complete to longest common string set wildmode=longest:full " remember more history set history=1000 " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif " Enable syntax highlighting highlight DiffAdd cterm=none ctermfg=Black ctermbg=Green gui=none guifg=Black guibg=Green highlight DiffDelete cterm=none ctermfg=Black ctermbg=Red gui=none guifg=Black guibg=Red highlight DiffChange cterm=none ctermfg=Black ctermbg=Yellow gui=none guifg=Black guibg=Yellow highlight DiffText cterm=none ctermfg=Black ctermbg=Magenta gui=none guifg=Black guibg=Magenta " Display tabs and trailing spaces visually set list set listchars=tab:>-,trail:ยท " " .gvimrc content here. " if has("gui_running") " set color scheme colorscheme darkblue "set guioptions-=m "set guioptions-=T set lines=50 set columns=85 " Set the font. if has("win32") || has("win64") "set guifont=FreeMono:h14:cANSI "set guifont=Courier\ AM:h12 else "set guifont=Bitstream\ Vera\ Sans\ Mono\ 12 set guifont=Monospace\ 12 endif else colors vahagn_black_terminal endif " Configure coloring on command line terminals. if &term=="xterm" set t_Co=8 set t_Sb=[4%dm set t_Sf=[3%dm endif " In many terminal emulators the mouse works just fine, thus enable it. if has('mouse') " set mouse=n endif " One such option is the 'hidden' option, which allows you to re-use the same " window and switch from an unsaved buffer without saving it first. Also allows " you to keep an undo history for multiple files when re-using the same window " in this way. Note that using persistent undo also lets you undo in multiple " files even in the same window, but is less efficient and is actually designed " for keeping undo history after closing Vim entirely. Vim will complain if you " try to quit without saving, and swap files will keep you safe if your computer " crashes. if exists('&hidden') set hidden endif " Modelined are used to configure files. if exists('&modeline') set modeline set modelines=10 endif " Set fold method if supported if has('folding') set nofoldenable set foldmethod=indent "fold based on indent set foldnestmax=3 set foldminlines=4 set foldlevel=1 set foldcolumn=2 " foldcolumn is width 2 if has("autocmd") autocmd FileType vim setlocal foldmethod=marker autocmd FileType c setlocal foldmethod=syntax autocmd FileType h setlocal foldmethod=syntax autocmd FileType cpp setlocal foldmethod=syntax endif endif " Only do this part when compiled with support for autocommands. if has("autocmd") " 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. filetype plugin indent on " start with all folds open au BufRead,BufNewFile,BufWinEnter * normal zR " highlight lone colon characters highlight WarnChar ctermbg=yellow ctermfg=red guibg=#FFCC33 guifg=#FF0000 "apply highlight when opening a file, changing text (N or I), or opening a split au BufRead,InsertCharPre *.cpp 2mat WarnChar /\w\+;\?:;\?\w\+/ " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au! " 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). " Also don't do it when the mark is in the first line, that is the default " position when opening a file. autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif augroup END endif " has("autocmd") " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. " Only define it when not defined already. if !exists(":DiffOrig") command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis \ | wincmd p | diffthis endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Key Mappings " " F4 grep the word under cursor. "map :execute "grep " . expand("") . " -r *.h *.cpp *.c *.f" cw map :execute "grep " . expand("") . " -r --include \*.h --include \*.cpp --include \*.c --include \*.f ." cw " Create a new tab. map :tabnew " "command! -nargs=* PFdiff :!p4 diff % " " Loads CF5Compile " Compile and run file if Ctrl-F5 is pressed. " if !exists('*CF5Compile') runtime plugin/cf5-compiler.vim endif map :call CF5Compile(1) map :call CF5Compile(0) " " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, " so that you can undo CTRL-U after inserting a line break. " inoremap u " " Move through wrapped lines instead of buffer lines. " noremap gk noremap gj imap gk imap gj " " Working with tabs especially if using console version. " nnoremap th :tabfirst nnoremap tj :tabnext nnoremap tk :tabprev nnoremap tl :tablast nnoremap tm :tabm nnoremap td :tabclose " " .gvimrc content here. " if has("gui_running") ":tab drop {file} " Hide show menu and toolbar. map :if &guioptions =~# 'm' \set guioptions-=m \set guioptions-=T \set showtabline=0 \else \set guioptions+=m \set guioptions+=T \set showtabline=1 \endif " Open file in a new tab. if has("browsefilter") let g:browsefilter = "All Files (*.*)\t*\n" endif else endif " " Vundle experimental stuff here. " if filereadable(expand("~/.vim/bundle/Vundle.vim/README.md")) filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' call vundle#end() filetype plugin indent on endif