"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 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 " enable omni completion set omnifunc=syntaxcomplete#Complete 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 " Highlight searched string as typed. set incsearch " 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 " enable 256 colors set t_Co=256 " Configure coloring on command line terminals. if &term=="xterm" " enable 256 colors set t_Co=256 " 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 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " vimdiff " " ignore whitespaces set diffopt+=iwhite " 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") """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Plugins " " " 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' " " Adds nice status and tabline. " Plugin 'bling/vim-airline' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' " " Color table and picker. " :XtermColorTable " press: # to yank, t to toggle, f to set text color " Plugin 'xterm-color-table.vim' " call vundle#end() filetype plugin indent on filetype plugin on endif if exists("dddd") "Plugin 'Rip-Rip/clang_complete' "Plugin 'altercation/vim-colors-solarized.git' "Plugin 'flazz/vim-colorschemes' "Plugin 'Valloric/YouCompleteMe' "Plugin 'rhysd/vim-clang-format' Plugin 'vim-scripts/Mark' Plugin 'bling/vim-airline' Plugin 'danro/rename.vim' Plugin 'gmarik/Vundle.vim' Plugin 'kana/vim-operator-user' Plugin 'kien/ctrlp.vim' Plugin 'majutsushi/tagbar' Plugin 'mattn/emmet-vim' Plugin 'mileszs/ack.vim' Plugin 'nanotech/jellybeans.vim' Plugin 'scrooloose/nerdtree' Plugin 'scrooloose/syntastic' Plugin 'tmhedberg/matchit' Plugin 'tpope/vim-commentary' Plugin 'tpope/vim-dispatch' Plugin 'tpope/vim-eunuch' Plugin 'tpope/vim-fugitive' Plugin 'tpope/vim-unimpaired' Plugin 'vim-scripts/Align' Plugin 'vim-scripts/Buffergator' Plugin 'vim-scripts/a.vim' Plugin 'vim-scripts/taglist.vim' Plugin 'vim-scripts/DoxyGen-Syntax' Plugin 'vim-scripts/DoxygenToolkit.vim' Plugin 'msanders/snipmate.vim' Plugin 'vim-scripts/xml.vim' Plugin 'junegunn/vim-easy-align' Plugin 'ntpeters/vim-better-whitespace' Plugin 'airblade/vim-gitgutter' "Plugin 'eiginn/netrw' "Plugin 'vim-scripts/TagHighlight' "Plugin 'gcmt/taboo.vim' " " Plugin configuration " " - - - - - - - - - - - - - - " NERDTree settings " - - - - - - - - - - - - - - map :NERDTreeToggle map :NERDTreeFind "map :Explore "map :Explore %:p:h let g:NERDTreeQuitOnOpen = 1 let g:NERDTreeDirArrows = 1 let NERDTreeIgnore = ['\.o$', '\.so$', '\.tsk$'] " - - - - - - - - - - - - - - " tagbar settings " - - - - - - - - - - - - - - map :TagbarToggle let g:tagbar_autoclose = 1 let g:tagbar_autofocus = 1 let g:tagbar_autoshowtag = 1 let g:tagbar_compact = 1 let g:tagbar_indent = 1 let g:tagbar_sort = 1 let g:tagbar_width = 60 let g:tagbar_ctags_bin = "/opt/swt/bin/ctags" " - - - - - - - - - - - - - - " powerline " - - - - - - - - - - - - - - let g:Powerline_symbols = "unicode" " - - - - - - - - - - - - - - " CtrlP " - - - - - - - - - - - - - - let g:ctrlp_root_markers = ['.ctrlp'] let g:ctrlp_custom_ignore = { \ 'file': '\v\.(o|d|dd)$', \ } " - - - - - - - - - - - - - - " Buffergator " - - - - - - - - - - - - - - let g:buffergator_viewport_split_policy = "L" " - - - - - - - - - - - - - - " syntastic " - - - - - - - - - - - - - - "let g:syntastic_cpp_compiler_options = ' -std=c++1y' let g:syntastic_mode_map = { \ "mode": "active", \ "active_filetypes": ["ruby", "php"], \ "passive_filetypes": ["c", "cpp"] } " - - - - - - - - - - - - - - " vim-colorschemes " - - - - - - - - - - - - - - colorscheme jellybeans let g:jellybeans_use_lowcolor_black = 0 " - - - - - - - - - - - - - - " Ack " - - - - - - - - - - - - - - let g:ack_default_options = " --ignore-file=is:tags -s -H --nocolor --nogroup --column" let g:ack_highlight = 1 " - - - - - - - - - - - - - - " a " - - - - - - - - - - - - - - let g:alternateExtensions_h = "cpp,c" let g:alternateExtensions_cpp = "h" let g:alternateExtensions_c = "h" " - - - - - - - - - - - - - - " netrw " - - - - - - - - - - - - - - let g:netrw_altv = 1 let g:netrw_fastbrowse = 2 let g:netrw_keepdir = 0 let g:netrw_liststyle = 3 let g:netrw_retmap = 1 let g:netrw_silent = 1 let g:netrw_special_syntax= 1 " - - - - - - - - - - - - - - " taboo vim " - - - - - - - - - - - - - - "let g:taboo_tab_format = "[%m:%N:%W] %f" let g:strip_whitespace_on_save = 1 endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Commands " "command! -nargs=* PFdiff :!p4 diff %' " 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 " " " .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 " open ctag definition in new tab map :tab split:exec("tag ".expand("")) " Create a new tab. map :tabnew " " F4 grep the word under cursor. " map :execute "grep " . expand("") . " -r --include \*.h --include \*.cpp --include \*.c --include \*.f ." cw " " 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 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Experimental staff "