diff options
Diffstat (limited to '.vimrc')
-rw-r--r-- | .vimrc | 195 |
1 files changed, 181 insertions, 14 deletions
@@ -1,10 +1,57 @@ " dotfiles -- .vimrc " author: johannst -set nocompatible " make Vim less Vi +set nocompatible " make vim less vi -source ~/.vim/vimrc_files/vundle.vim -source ~/.vim/vimrc_files/plugin_config.vim +"{{{ Vundle + + " to install plugins open vim and run :PluginInstall from within vim OR + " vim +PluginInstall +qall from cmd line + + filetype off " necessary for vundle!!! + set rtp+=~/.vim/bundle/Vundle.vim + + call vundle#begin() + Plugin 'VundleVim/Vundle.vim' + Plugin 'jlanzarotta/bufexplorer' + Plugin 'vim-airline/vim-airline' + Plugin 'vim-airline/vim-airline-themes' + Plugin 'majutsushi/tagbar' + Plugin 'kien/ctrlp.vim' + " c++ modifief headers: http://www.vim.org/scripts/script.php?script_id=2358 + "Plugin 'vim-scripts/OmniCppComplete' + call vundle#end() + +"}}} +"{{{ Plugin Config + + " powerline + let g:airline#extensions#tabline#enabled = 1 + let g:airline#extensions#tabline#fnamemod = ':t' + let g:airline_powerline_fonts = 1 + if !exists('g:airline_symbols') + let g:airline_symbols = {} + endif + + " tagbar + let g:tagbar_ctags_bin='~/.vim/bin/ctags' + + " omni complete + " add tags + " set tags+=~/.vim/tags/cpp_tags + "let OmniCpp_NamespaceSearch = 1 + "let OmniCpp_GlobalScopeSearch = 1 + "let OmniCpp_ShowAccess = 1 + "let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters + "let OmniCpp_MayCompleteDot = 1 " autocomplete after . + "let OmniCpp_MayCompleteArrow = 1 " autocomplete after -> + "let OmniCpp_MayCompleteScope = 1 " autocomplete after :: + "let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] + "" automatically open and close the popup menu / preview window + "au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif + "set completeopt=menuone,menu,longest,preview + +"}}} " +----------------------------+ " | Color Settings | @@ -92,21 +139,141 @@ set novisualbell autocmd QuickFixCmdPost [^l]* nested cwindow autocmd QuickFixCmdPost l* nested lwindow -" +----------------------------+ -" | Source Extrenal Files | -" +----------------------------+ -source ~/.vim/vimrc_files/colors.vim -source ~/.vim/vimrc_files/keymaps.vim -source ~/.vim/vimrc_files/highlights.vim -source ~/.vim/vimrc_files/functions.vim +"{{{ Keymaps + + " set leader key + "execute "set <M-s>=\es" + let mapleader=";" + + " re-source .vimrc + map <leader>v :source ~/.vimrc<CR> + + "remap esc button + imap jj <Esc> + + " quit buffer + noremap <leader>q :bd + + " re-adjust indentation + map <leader>f mzgg=G`z + + " navigate between different splits + map <C-Down> <C-w>j + map <C-Up> <C-w>k + map <C-Right> <C-w>l + map <C-Left> <C-w>h + map <C-j> <C-w>j + map <C-k> <C-w>k + map <C-l> <C-w>l + map <C-h> <C-w>h + + " resize splits + "map <C-j> <C-w>5- + "map <C-k> <C-w>5+ + "map <C-l> <C-w>5< + "map <C-h> <C-w>5> + + " navigate between different buffers + nnoremap <S-Left> :bprevious<CR> + nnoremap <S-Right> :bnext<CR> + nnoremap <S-h> :bprevious<CR> + nnoremap <S-l> :bnext<CR> + + " ctrl-ae jump to line start/end + nnoremap <C-a> 0 + nnoremap <C-e> $ + inoremap <C-a> <C-o>0 + inoremap <C-e> <C-o>$ + vnoremap <C-a> 0 + vnoremap <C-e> $ + cnoremap <C-a> <Home> + cnoremap <C-e> <End> + + " Shortcut to toggle relative numbering mode + nnoremap <C-n> :call ToggleRelativeNumber()<CR> + + " add a marker fold snippet (for C/C++) + nnoremap <C-f> o//{{{ <Esc>o//}}}<Esc><Up>A + imap <C-f> <ESC><C-f> + " only works with v-block (not v-line) + vnoremap <C-f> VV'<O//{{{<Esc>'>o//}}}<Esc>'<<ESC><Up>A + + " substitute selection + vnoremap <C-r> "hy:%s/<C-r>h/<C-r>h/gc<left><left><left> + + " yank/paste into/from register + vnoremap <C-c> "ay + inoremap <C-v> <C-r>a + cnoremap <C-v> <C-r>a + + " +-----------------+ + " | Plugin specific | + " +-----------------+ + " Open BufferExplorer + nnoremap <C-b> :call BufExplorer()<CR> + + " Toggle Tagbar + nnoremap <leader>t :TagbarToggle<CR> + + " build tags of your own project with Ctrl-F12 + map <C-t> :!ctags -R --sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q --language-force=C++ .<CR> + +"}}} +"{{{ Global Highlighting + + " hi clear CursorLine + " augroup CLClear + " autocmd! ColorScheme * hi clear CursorLine + " augroup END + + "hi LineNr ctermfg=208 + + " Highlight color of current line + hi CursorLineNR cterm=bold ctermfg=255 ctermbg=208 + "hi CursorLineNR cterm=bold ctermfg=226 + augroup CLNRSet + autocmd! ColorScheme * hi CursorLineNR cterm=bold ctermfg=255 ctermbg=208 + "autocmd! ColorScheme * hi CursorLineNR cterm=bold ctermfg=226 + augroup END + + " Highlight status line + hi StatusLine ctermbg=38 ctermfg=0 cterm=NONE term=NONE gui=NONE + "hi StatusLineNC ctermbg=81 ctermfg=0 + + " matching brackets + "hi MatchParen cterm=underline ctermbg=141 ctermfg=yellow + hi MatchParen cterm=underline ctermbg=89 ctermfg=208 + "hi MatchParen cterm=underline ctermbg=DarkMagenta ctermfg=12 + +"}}} +"{{{ Functions + " Split Window and scroll down + function! SplitScroll() + :wincmd v + :wincmd w + execute "normal! \<C-d>" + :set scrollbind + :wincmd w + :set scrollbind + endfunc + + " toggle relative line number mode + function! ToggleRelativeNumber() + if(&relativenumber == 1) + set norelativenumber + else + set relativenumber + endif + endfunc +"}}} " +----------------------------+ " | Tmux specific settings | " +----------------------------+ " tmux will send xterm-style keys when its xterm-keys option is on if &term =~ '^screen' - execute "set <xUp>=\e[1;*A" - execute "set <xDown>=\e[1;*B" - execute "set <xRight>=\e[1;*C" - execute "set <xLeft>=\e[1;*D" + execute "set <xUp>=\e[1;*A" + execute "set <xDown>=\e[1;*B" + execute "set <xRight>=\e[1;*C" + execute "set <xLeft>=\e[1;*D" endif |