From 190811dccbcaee6bd2b55b1f2e5b75f910be31be Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Tue, 13 Sep 2016 16:33:51 +0200 Subject: started over Dropped YouCompleteMe, because its deployment is too complicated for a default configuration. --- doc/UPDATE | 4 + vimrc | 377 ++++++++++++++++++++----------------------------------------- vimrc-old | 303 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 432 insertions(+), 252 deletions(-) create mode 100644 doc/UPDATE create mode 100644 vimrc-old diff --git a/doc/UPDATE b/doc/UPDATE new file mode 100644 index 0000000..6321b85 --- /dev/null +++ b/doc/UPDATE @@ -0,0 +1,4 @@ +git submodule -q foreach git pull -q origin master + +In Vim: +:VundleUpdate diff --git a/vimrc b/vimrc index 75d7aac..467a1f3 100644 --- a/vimrc +++ b/vimrc @@ -1,115 +1,136 @@ -" vi:columns=160:list:ts=2:sts=2:sw=2 -"================================================================================ -" Vundle: plugin manager... -set nocompatible | " do not try to be vi, be vim (required by Vundle) -filetype off | " Vundle needs this -set rtp+=~/.vim/bundle/Vundle.vim | " set runtimepath (required by Vundle) -call vundle#begin('~/.vim/bundle/') | " location where Vundle searches&installs plugins +set nocompatible " be iMproved, required +filetype off " required -" Plugin dependant configurations... -Plugin 'Valloric/YouCompleteMe' | " syntax checker and code completion -Plugin 'cscope_plus.vim' | " run cscope -R -b in project folder then use -Plugin 'autoload_cscope.vim' | " CTRL+\ s searches word under cursor, CTRL+T back +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() + +" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +" Brilliant Plugins by tpope =========================. +Plugin 'tpope/vim-sensible' | " a sane and modern default configuration Plugin 'tpope/vim-fugitive' | " the most complete GIT integration plugin -Plugin 'jeaye/color_coded' | " semantic highlighting with vim -Plugin 'terryma/vim-multiple-cursors' | " displays visual block mode as cursors -Plugin 'taglist-plus' | " quick code navigator -Plugin 'jdonaldson/vaxe' | " code completion for haxe -Plugin 'sheerun/vim-polyglot' | " better syntax highlighting/indentation for multiple languages -Plugin 'loremipsum' | " Sample text generator -Plugin 'vim-airline/vim-airline' | " beautification of the mode line -Plugin 'nathanaelkane/vim-indent-guides' | " shows indentation guidelines by pressing ig -Plugin 'gregsexton/matchtag' | " highlights closing ML tags like braces -Plugin 'indenthtml.vim' | " works better with mixed html/css/javascript -Plugin 'easymotion/vim-easymotion' | " speed up navigation: try \\w or \\f, then one of the highlighted chars Plugin 'tpope/vim-surround' | " plugin makes cs"' inside a line replace " with ' -Plugin 'Shougo/vimproc.vim' -Plugin 'Shougo/vimshell.vim' -Plugin 'jeetsukumaran/vim-buffergator' | " switch buffers with \b or <\-Left> <\-Right> +Plugin 'tpope/vim-repeat' | " lets . (dot) repeat plugin macros as well, specifically vim-surround +Plugin 'tpope/vim-vinegar' | " Improves :Explore +Plugin 'tpope/vim-characterize' | " normal mode: make ga show character names of Unicode chars (ga shows hex and dec values) + +" Colorschemes =======================================. +Plugin 'tpope/vim-vividchalk' | " dark theme +Plugin 'nelstrom/vim-mac-classic-theme' | " light theme + +" AIRLINE ============================================. +Plugin 'vim-airline/vim-airline' | " beautification of the mode line +Plugin 'vim-airline/vim-airline-themes' | " airline themes to match any light and dark terminal using :AirlineTheme +let g:airline_powerline_fonts = 1 | " +let g:airline_inactive_collapse = 1 | " +let g:airline#extensions#tabline#enabled = 1 | " +let g:airline#extensions#tabline#show_buffers = 1 | " +let g:airline#extensions#tabline#show_tabs = 1 | " +let g:airline#extensions#tabline#fnamemod = ':t' | " let airline just show the filename without its path +let g:airline_theme='papercolor' | " specifies which colorscheme should airline uses -let g:airline_powerline_fonts = 1 -let Tlist_Compact_Format = 1 | " -let Tlist_GainFocus_On_ToggleOpen = 1 | " -let Tlist_Close_On_Select = 1 | " +" Additional =========================================. +Plugin 'sheerun/vim-polyglot' | " better syntax highlighting/indentation for multiple languages +Plugin 'gregsexton/matchtag' | " highlights closing ML tags like braces +Plugin 'loremipsum' | " Sample text generator +" Plugin 'davidhalter/jedi-vim' | " best autocompletion for python +Plugin 'klen/python-mode' +Plugin 'tweekmonster/django-plus.vim' | " django helper -Plugin 'VundleVim/Vundle.vim' | " Vundle itself (required) -let g:ycm_global_ycm_extra_conf = '~/.vim/ycm_extra_conf.py' | " fallback, right one should be in the applications path -let g:ycm_confirm_extra_conf = 0 | " disable 'do you really want to execute .py?' -let g:ycm_key_select_completion = '' | " key completion key -let g:ycm_error_symbol = '✖' | " insert this as an error symbol in the gutter bar -let g:ycm_warning_symbol = '➔' | " insert this as a warning symbol in the gutter bar -let g:ycm_collect_identifiers_from_tags_files = 1 | " -let g:ycm_autoclose_preview_window_after_insertion=1 | " close the window when leaving insert mode -"let g:ycm_semantic_triggers = {'c' : ['(', ',']} | " add additional triggers (not recommend) -let b:html_omni_flavor='xhtml' | " prever xhtml over html because that makes inline php code possible without hassle -let html_use_css = 1 | " when using :TOhtml no font-tags will be used, but proper css -let g:vim_markdown_folding_disabled=1 | " disable code folding with vimdiff (also see set nofoldenable) +" Autocompleter ======================================. +Plugin 'Shougo/vimproc.vim' | " dependency for other Shougo plugins +Plugin 'Shougo/neocomplete.vim' +Plugin 'Shougo/neosnippet-snippets' +Plugin 'Rip-Rip/clang_complete' -let g:netrw_liststyle=3 | " Explore mode: 3 shows a complete tree instead of the current directory -let g:netrw_list_hide='^\..*' | " Explore mode: hide files starting with dot +filetype plugin on +set omnifunc=syntaxcomplete#Complete +inoremap +inoremap +" keep selection when indenting a selected block: +vnoremap < >gv -" speed up CTRL-P Menu... -let g:ctrlp_user_command = 'ag %s -i --nocolor --nogroup --hidden - \ --ignore .git - \ --ignore .svn - \ --ignore .hg - \ --ignore .DS_Store - \ --ignore "**/*.pyc" - \ -g ""' -call vundle#end() | " required by Vundle -filetype plugin indent on | " required by Vundle -"================================================================================ -" custom config -colorscheme mac_classic -" colorscheme coderonline -syntax enable +nnoremap :bn| " lets one use CTRL+Tab to switch between tabs +nnoremap :bp| " use CTRL+Shift+Tab to switch to preview tab -set noswapfile | " noundofile, nobackup, nowritebackup -set backupdir=~/.vim/temp | " using :set backup will copy current file to this directory -set directory=~/.vim/temp | " -set undodir=~/.vim/temp | " -set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth) -set autoindent | " always set autoindenting on -set copyindent | " copy the previous indentation on autoindenting -set scrolloff=2 | " always keeps at least two lines visible (when seeking) -" set selectmode=mouse | " avoid using select mode (only with mouse) -set mousemodel=popup_setpos | " display a default right click menu for the selection (that is c&p is possible) -set selection=exclusive | " includes last character of the selection into following command (like x or d) +" Disabled ===========================================. +"# Plugin 'indenthtml.vim' | " works better with mixed html/css/javascript +"# Plugin 'evanmiller/nginx-vim-syntax' -set whichwrap=b,s,<,>,[,] | " beyond beginning/end line causes cusor to wrap -set backspace=indent,eol,start| " allow backspacing over everything in insert mode, not needed with whichwrap -set diffopt+=vertical,iwhite,filler | " lets diff ignore white spaces -set spell spelllang=en,de | " enable spell checker -set virtualedit=onemore | " one character beyond the line length should be navigatable (options: all,insert,block,onemore) -set breakindent cpoptions+=n | " when wrapping lines indent wrapped line to align with the previews -set linebreak | " do not wrap in the middle of words -set display+=lastline | " do not show the @ symbol in the end of a long line -set showcmd | " displays status line messages while selecting (matrix size) -set nofoldenable | " do not fold code automatically -set tags+=~/.vim/systags | " ctags -R -f ~/.vim/systags /usr/include /usr/local/include -set wildmenu wildmode=full | " wildmenu code completion -set guifont="Droid Sans Mono for Powerline 10" +" All of your Plugins must be added before the following line +call vundle#end() | " required +filetype plugin indent on | " required +" colorscheme mac_classic | " finally set which colorscheme to use +" colorscheme vividchalk | " finally set which colorscheme to use +colorscheme mac_classic -" search... -set ignorecase smartcase | " if search pattern contains uppercase then search is case sensitive -set incsearch | " do incremental searching -set showmatch matchtime=4 | " blinks matching braces +" set term=xtermc | " required on solaris +set t_Co=256 | " required on some ssh sessions -set novisualbell | " don't beep -set noerrorbells | " don't beep + +syntax on | " enable syntax highlighting +set hidden | " allow switiching buffers even if the current buffer contains changes (displays +) +set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth) +set encoding=utf-8 | " set up vim's cosole encoding (not file encoding, for which there is fileencoding=) +set ignorecase smartcase | " search with ignorecase by default, but use case sensitive search when one captical char is contained +set ttimeoutlen=10 | " set esc key timeout in ms- +set linebreak | " wrap long lines at char 'breakat', not inside words set clipboard=unnamedplus | " makes copy and paste work (autoselectplus might work as well) set number | " toggle line numbers -set formatprg=par | " set external formatting program to par, use gwip to format with this -set laststatus=2 | " this is required for airline -set cmdheight=1 | " controls how many lines the command line has set relativenumber | " displays current lines line no as zero point from where relative numbers are getting counted +set list | " shows unprinable characters in the current line +set spell spelllang=en,de | " enable spell checker set splitbelow | " open new windows below the current one (i find that more intuitive) +set colorcolumn=80 | " show an indicator (different background in column 80) +highlight ColorColumn guibg=#F0F0E0 + +if (&t_Co > 2) | " running in a terminal with colorterm support? (here: always true, defined above) + set hlsearch | " highlight all search matches + set cursorline | " highlight currently selected line +endif + +if has("gui_running") + set guioptions+=eig + set guioptions-=T | " toolbar + set guioptions+=c | " use console dialogs instead of popups + set guioptions+=a | " autoselect: copy&paste using middleclick +endif + + +if has("autocmd") + set modeline | " set variables specific to a file, like indentation by adding a comment + " automatically reload this file when it gets edited + autocmd BufWritePost $MYVIMRC source $MYVIMRC + " automatically remove trailing white spaces on save.. + autocmd BufWritePre * %s/\s\+$//e + " au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main + " Enable omni completion. + " autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS + autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags + autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS + autocmd FileType python setlocal omnifunc=pythoncomplete#Complete + autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags +endif + +let &titlestring = hostname() . "[vim(" . expand("%:t") . ")]" +" set window title for screen(3) +if &term == "screen" + set t_ts=k + set t_fs=\ +endif +if &term == "screen" || &term == "xterm" + set title +endif + if has("multi_byte") set encoding=utf-8 | " we need default utf-8 encoding to use cool chars as line break and so on (see below) @@ -122,169 +143,21 @@ if has("multi_byte") set listchars+=tab:▸\ | " symbols used when using :set list (which displays non-printable chars) endif -if has("autocmd") - set modeline | " set variables specific to a file, like indentation by adding a comment - set modelines=3 | " how many lines in the beginning and end of the file can be mode lines? - - augroup resCur | " make cursor appear in its previous position when reopening a file... - autocmd BufReadPost * call setpos(".", getpos("'\"")) - augroup END - - augroup PreviewOnBottom | " will open new windows below the current (only in insert mode, so that the preview window is drawn below) - autocmd InsertEnter * set splitbelow - autocmd InsertLeave * set splitbelow! - augroup END - augroup OmniFunc | " this will enable omnicomplete just in case this configuration runs somewhere, where YouCompleteMe is not compiled - if exists("+omnifunc") - autocmd Filetype * - \ if &omnifunc == "" | - \ setlocal omnifunc=syntaxcomplete#Complete | - \ setlocal completeopt=longest,menuone | - \ endif - autocmd FileType html set omnifunc=htmlcomplete#CompleteTags - endif - augroup END - - autocmd FileType text setlocal textwidth=78 | " text files: set 'textwidth' to 78 - autocmd FileType gitcommit set tw=72 | " longer commit messages without auto line wrapping - autocmd FileType LaTeX let g:tex_flavor = "latex"| set conceallevel=1| set concealcursor= - autocmd BufNewFile,BufReadPost *.config set filetype=xml | " visual studio config file - autocmd BufNewFile,BufReadPost *.csproj set filetype=xml | " visual studio project file - autocmd BufNewFile,BufReadPost *.sln set filetype=xml | " visual studio solution file -endif - -"================================================================================ -" gui stuff and appearance -if &t_Co > 2 - set hlsearch | " highlight all search matches - set cursorline | " highlight currently selected line -endif - -if has("gui_running") - set mouse=a | " use mouse in gui-mode (which is default) - set mouseshape+=n:beam,v:beam | " display a text input cursor even in normal and selection mode - set guicursor=n-v-c:ver20-Cursor-blinkon500-blinkoff500 | " how the caret looks like - set guitablabel=%t | " do not display full path as tabname - set guioptions+=m | " menu bar - set guioptions-=T | " toolbar - set guioptions+=r | " right-hand scroll bar - set guioptions-=c | " use console dialogs instead of popups - set guioptions+=a | " autoselect: copy&paste using middleclick - set guioptions+=e | " add tab pages - set guioptions+=p | " use gui pointer callback for x11 - set toolbariconsize=large | " make the icon toolbar as big as possible - "set columns=80 | " set initial window width (so that it fits the terminals) -else - if &term =~? 'mlterm\|xterm\|screen' - set t_Co=256 | " fixes incompatibilities with our color scheme - endif - set mouse=nh | " limits mouse usage to normal mode and help files, so that middle click text insertion works in insert mode - set title | " set the terminal caption - set icon | " sets the terminal icon to vim - set ttyfast | " modern terminals are all fast in a way - "set titleold="vim ended" | " set terminal title after closing vim - "set titlestring="VIM-CONSOLE" | " set window title - "if has('mouse') - "endif -endif - - -"================================================================================ -" custom commands... +" set title +" set t_ts=^[k +" set t_fs=^[\ +" auto BufEnter * :set title | let &titlestring = 'v:' . expand('%') +" auto VimLeave * :set t_ts=^[k^[\ +" To ignore plugin indent changes, instead use: " -" assign selection keys (these i missed a lot) -nmap vh| " shift-left selects to the left -xmap h| " ^^ -nmap vl| " shift-right selects to the right -xmap l| " ^^ -nmap vk| " shift-up selects like other text editors -xmap k| " ^^ -nmap vj| " shift down selects like other text editors -xmap j| " ^^ -nmap ^| " default homing in code editors is the first letter of a line -xmap 0| " go to the beginning of the line -xmap 0| " ^^ -xmap >gv| " indent lines (and retain selection) -xmap VH| " selects predessing paragraph -nmap VL| " selects following paragraph -nmap V{| " selects predessing paragraph -nmap V}| " selects following paragraph - - - - - -map h|map j| " window navigation shortcuts -map k|map l| " window navigation shortcuts - -cmap w!! w !sudo tee % >/dev/null| " write :w!! to execute :w as root user - -" custom hotkeys... -nnoremap :tabnext| " lets one use CTRL+Tab to switch between tabs -nnoremap :tabprevious| " use CTRL+Shift+Tab to switch to preview tab - -nnoremap j gj|nnoremap k gk| " do not jump over wrapped lines - -nnoremap $ g$| " and make the $ key position the cursor after the last char of that line, not before -nnoremap g$| " and make the key position the cursor after the last char of that line -" function ExtendedHome() -" let column = col('.') -" normal! ^ -" if column == col('.') -" normal! 0 -" endif -" endfunction -" noremap :call ExtendedHome() - -nnoremap u - - -"map el -"map hgel -"vnoremap e -"vnoremap b - - -" plugin hotkeys -map :TlistToggle| " bind TagList to Hotkey Ctrl+L -inoremap ( (| " when opening a bracket: call the OmniComplete function, display the menu, but deselect the first entry (C-p) - - -set makeprg=make\ test -nnoremap :!make| " classic key binding: press F5 to compile and execute (if you have a Makefile with make test doing that) - -"================================================================================ -" deactivated on-demand commands (just in case one needs them one day) +" Brief help +" :PluginList - lists configured plugins +" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate +" :PluginSearch foo - searches for foo; append `!` to refresh local cache +" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " -" code completion: http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE -" reacts on CTRL+P, CTRL+Space -"inoremap pumvisible() ? "\" : "\u\" -"inoremap pumvisible() ? "\" : "\" -"inoremap pumvisible() ? "\" : "\" -"inoremap pumvisible() ? "\" : "\" -"inoremap pumvisible() ? "\\\" : "\" -"inoremap pumvisible() ? "\\\" : "\" -" set guiheadroom=0| " do not fill non-functional area of the empty editor with gtk background -" map shift-right to visually select and so on -"nnoremap El -"nnoremap vl -"nnoremap vj -"nnoremap vk -"nnoremap vj -" noremap % v% " jump between braces and highlight -"nnoremap ^ -"vmap ^ -"nnoremap $ -"vmap $ -"nnoremap -"nnoremap -":inoremap pumvisible() ? "\" : "\u\" -"inoremap pumvisible() ? "\" : "\" " breaks cursor keys! -" binding ESC can easily break cursor key movement on the console (tricky, because gvim works) -"inoremap -"inoremap +" see :h vundle for more details or wiki for FAQ +" Put your non-Plugin stuff after this line " -"map OA k|map OB j|map OC l|map OD h| " allow cursor keys in insert mode diff --git a/vimrc-old b/vimrc-old new file mode 100644 index 0000000..c5bd4e6 --- /dev/null +++ b/vimrc-old @@ -0,0 +1,303 @@ +" vi:columns=160:list:ts=2:sts=2:sw=2 +"================================================================================ +" Vundle: plugin manager... +set nocompatible | " do not try to be vi, be vim (required by Vundle) +filetype off | " Vundle needs this +set rtp+=~/.vim/bundle/Vundle.vim | " set runtimepath (required by Vundle) +call vundle#begin('~/.vim/bundle/') | " location where Vundle searches&installs plugins + +" Plugin dependant configurations... +Plugin 'tpope/vim-sensible' | " a sane and modern default configuration +Plugin 'tpope/vim-fugitive' | " the most complete GIT integration plugin +Plugin 'tpope/vim-surround' | " plugin makes cs"' inside a line replace " with ' +Plugin 'tpope/vim-repeat' | " lets . (dot) repeat plugin macros as well, specifically vim-surround +Plugin 'tpope/vim-vinegar' | " Improves :Explore +Plugin 'tpope/vim-characterize' | " normal mode: make ga show character names of Unicode chars (ga shows hex and dec values) + +Plugin 'tpope/vim-vividchalk' | " dark theme +Plugin 'nelstrom/vim-mac-classic-theme' | " light theme + +Plugin 'Valloric/YouCompleteMe' | " syntax checker and code completion +Plugin 'cscope_plus.vim' | " run cscope -R -b in project folder then use +Plugin 'autoload_cscope.vim' | " CTRL+\ s searches word under cursor, CTRL+T back +Plugin 'jeaye/color_coded' | " semantic highlighting with vim +Plugin 'terryma/vim-multiple-cursors' | " displays visual block mode as cursors +Plugin 'taglist-plus' | " quick code navigator +Plugin 'jdonaldson/vaxe' | " code completion for haxe +Plugin 'sheerun/vim-polyglot' | " better syntax highlighting/indentation for multiple languages +Plugin 'loremipsum' | " Sample text generator +Plugin 'vim-airline/vim-airline' | " beautification of the mode line +Plugin 'nathanaelkane/vim-indent-guides' | " shows indentation guidelines by pressing ig +Plugin 'gregsexton/matchtag' | " highlights closing ML tags like braces +Plugin 'indenthtml.vim' | " works better with mixed html/css/javascript +Plugin 'easymotion/vim-easymotion' | " speed up navigation: try \\w or \\f, then one of the highlighted chars +Plugin 'Shougo/vimproc.vim' +Plugin 'Shougo/vimshell.vim' +Plugin 'jeetsukumaran/vim-buffergator' | " switch buffers with \b or <\-Left> <\-Right> + +let g:airline_powerline_fonts = 1 + +let Tlist_Compact_Format = 1 | " +let Tlist_GainFocus_On_ToggleOpen = 1 | " +let Tlist_Close_On_Select = 1 | " + +Plugin 'VundleVim/Vundle.vim' | " Vundle itself (required) +let g:ycm_global_ycm_extra_conf = '~/.vim/ycm_extra_conf.py' | " fallback, right one should be in the applications path +let g:ycm_confirm_extra_conf = 0 | " disable 'do you really want to execute .py?' +let g:ycm_key_select_completion = '' | " key completion key +let g:ycm_error_symbol = '✖' | " insert this as an error symbol in the gutter bar +let g:ycm_warning_symbol = '➔' | " insert this as a warning symbol in the gutter bar +let g:ycm_collect_identifiers_from_tags_files = 1 | " +let g:ycm_autoclose_preview_window_after_insertion=1 | " close the window when leaving insert mode +"let g:ycm_semantic_triggers = {'c' : ['(', ',']} | " add additional triggers (not recommend) + +let b:html_omni_flavor='xhtml' | " prever xhtml over html because that makes inline php code possible without hassle +let html_use_css = 1 | " when using :TOhtml no font-tags will be used, but proper css +let g:vim_markdown_folding_disabled=1 | " disable code folding with vimdiff (also see set nofoldenable) + +let g:netrw_liststyle=3 | " Explore mode: 3 shows a complete tree instead of the current directory +let g:netrw_list_hide='^\..*' | " Explore mode: hide files starting with dot + + +" speed up CTRL-P Menu... +let g:ctrlp_user_command = 'ag %s -i --nocolor --nogroup --hidden + \ --ignore .git + \ --ignore .svn + \ --ignore .hg + \ --ignore .DS_Store + \ --ignore "**/*.pyc" + \ -g ""' + +call vundle#end() | " required by Vundle +filetype plugin indent on | " required by Vundle +"================================================================================ +" custom config +colorscheme mac_classic +" colorscheme coderonline +syntax enable + +set noswapfile | " noundofile, nobackup, nowritebackup +set backupdir=~/.vim/temp | " using :set backup will copy current file to this directory +set directory=~/.vim/temp | " +set undodir=~/.vim/temp | " + +set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth) +set autoindent | " always set autoindenting on +set autochdir | " change to the current files working dir (might break some plugins!) +set copyindent | " copy the previous indentation on autoindenting +set scrolloff=2 | " always keeps at least two lines visible (when seeking) +" set selectmode=mouse | " avoid using select mode (only with mouse) +set mousemodel=popup_setpos | " display a default right click menu for the selection (that is c&p is possible) +set selection=exclusive | " includes last character of the selection into following command (like x or d) + +set whichwrap=b,s,<,>,[,] | " beyond beginning/end line causes cusor to wrap +set backspace=indent,eol,start| " allow backspacing over everything in insert mode, not needed with whichwrap +set diffopt+=vertical,iwhite,filler | " lets diff ignore white spaces +set spell spelllang=en,de | " enable spell checker +set virtualedit=onemore | " one character beyond the line length should be navigatable (options: all,insert,block,onemore) +set breakindent cpoptions+=n | " when wrapping lines indent wrapped line to align with the previews +set linebreak | " do not wrap in the middle of words +set display+=lastline | " do not show the @ symbol in the end of a long line +set showcmd | " displays status line messages while selecting (matrix size) +set nofoldenable | " do not fold code automatically +set tags+=~/.vim/systags | " ctags -R -f ~/.vim/systags /usr/include /usr/local/include +set wildmenu wildmode=full | " wildmenu code completion +set guifont="Droid Sans Mono for Powerline 10" + +" search... +set ignorecase smartcase | " if search pattern contains uppercase then search is case sensitive +set incsearch | " do incremental searching +set showmatch matchtime=4 | " blinks matching braces + +set novisualbell | " don't beep +set noerrorbells | " don't beep +set clipboard=unnamedplus | " makes copy and paste work (autoselectplus might work as well) +set number | " toggle line numbers +set formatprg=par | " set external formatting program to par, use gwip to format with this +set laststatus=2 | " this is required for airline +set cmdheight=1 | " controls how many lines the command line has +set relativenumber | " displays current lines line no as zero point from where relative numbers are getting counted +set timeoutlen=500 | " time between keys e.g. 80i= +set ttimeoutlen=10 | " set esc key timeout in ms + +set splitbelow | " open new windows below the current one (i find that more intuitive) + +if has("multi_byte") + set encoding=utf-8 | " we need default utf-8 encoding to use cool chars as line break and so on (see below) + scriptencoding utf-8 | " tell vim that we are using utf-8 here + set showbreak+=› | " symbol used in the beginning of a wrapped line + set listchars=eol:↲ | " symbols used when using :set list (which displays non-printable chars) + set listchars+=trail:· | " symbols used when using :set list (which displays non-printable chars) + set listchars+=precedes:« | " symbols used when using :set list (which displays non-printable chars) + set listchars+=extends:» | " symbols used when using :set list (which displays non-printable chars) + set listchars+=tab:▸\ | " symbols used when using :set list (which displays non-printable chars) +endif + +if has("autocmd") + set modeline | " set variables specific to a file, like indentation by adding a comment + set modelines=3 | " how many lines in the beginning and end of the file can be mode lines? + + augroup resCur | " make cursor appear in its previous position when reopening a file... + autocmd BufReadPost * call setpos(".", getpos("'\"")) + augroup END + + augroup PreviewOnBottom | " will open new windows below the current (only in insert mode, so that the preview window is drawn below) + autocmd InsertEnter * set splitbelow + autocmd InsertLeave * set splitbelow! + augroup END + + augroup OmniFunc | " this will enable omnicomplete just in case this configuration runs somewhere, where YouCompleteMe is not compiled + if exists("+omnifunc") + autocmd Filetype * + \ if &omnifunc == "" | + \ setlocal omnifunc=syntaxcomplete#Complete | + \ setlocal completeopt=longest,menuone | + \ endif + autocmd FileType html set omnifunc=htmlcomplete#CompleteTags + endif + augroup END + + autocmd FileType text setlocal textwidth=78 | " text files: set 'textwidth' to 78 + autocmd FileType gitcommit set tw=72 | " longer commit messages without auto line wrapping + autocmd FileType LaTeX let g:tex_flavor = "latex"| set conceallevel=1| set concealcursor= + autocmd BufNewFile,BufReadPost *.config set filetype=xml | " visual studio config file + autocmd BufNewFile,BufReadPost *.csproj set filetype=xml | " visual studio project file + autocmd BufNewFile,BufReadPost *.sln set filetype=xml | " visual studio solution file +endif + +"================================================================================ +" gui stuff and appearance +if &t_Co > 2 + set hlsearch | " highlight all search matches + set cursorline | " highlight currently selected line +endif + + +if has("gui_running") + set mouse=a | " use mouse in gui-mode (which is default) + set mouseshape+=n:beam,v:beam | " display a text input cursor even in normal and selection mode + set guicursor=n-v-c:ver20-Cursor-blinkon500-blinkoff500 | " how the caret looks like + set guitablabel=%t | " do not display full path as tabname + set guioptions+=m | " menu bar + set guioptions-=T | " toolbar + set guioptions+=r | " right-hand scroll bar + set guioptions-=c | " use console dialogs instead of popups + set guioptions+=a | " autoselect: copy&paste using middleclick + set guioptions+=e | " add tab pages + set guioptions+=p | " use gui pointer callback for x11 + set toolbariconsize=large | " make the icon toolbar as big as possible + "set columns=80 | " set initial window width (so that it fits the terminals) +else + if &term =~? 'mlterm\|xterm\|screen' + set t_Co=256 | " fixes incompatibilities with our color scheme + endif + set mouse=nh | " limits mouse usage to normal mode and help files, so that middle click text insertion works in insert mode + set title | " set the terminal caption + set icon | " sets the terminal icon to vim + set ttyfast | " modern terminals are all fast in a way + "set titleold="vim ended" | " set terminal title after closing vim + "set titlestring="VIM-CONSOLE" | " set window title + "if has('mouse') + "endif +endif + + +"================================================================================ +" custom commands... +" +" assign selection keys (these i missed a lot) +nmap vh| " shift-left selects to the left +xmap h| " ^^ +nmap vl| " shift-right selects to the right +xmap l| " ^^ +nmap vk| " shift-up selects like other text editors +xmap k| " ^^ +nmap vj| " shift down selects like other text editors +xmap j| " ^^ +nmap ^| " default homing in code editors is the first letter of a line +xmap 0| " go to the beginning of the line +xmap 0| " ^^ +xmap >gv| " indent lines (and retain selection) +xmap VH| " selects predessing paragraph +nmap VL| " selects following paragraph +nmap V{| " selects predessing paragraph +nmap V}| " selects following paragraph + +nmap :24vs.| " means the same as :vsplit. and opens the :Exlore -window with a width of 24 + + + + + +map h|map j| " window navigation shortcuts +map k|map l| " window navigation shortcuts + +cmap w!! w !sudo tee % >/dev/null| " write :w!! to execute :w as root user + +" custom hotkeys... +nnoremap :tabnext| " lets one use CTRL+Tab to switch between tabs +nnoremap :tabprevious| " use CTRL+Shift+Tab to switch to preview tab + +nnoremap j gj|nnoremap k gk| " do not jump over wrapped lines + +nnoremap $ g$| " and make the $ key position the cursor after the last char of that line, not before +nnoremap g$| " and make the key position the cursor after the last char of that line +" function ExtendedHome() +" let column = col('.') +" normal! ^ +" if column == col('.') +" normal! 0 +" endif +" endfunction +" noremap :call ExtendedHome() + +nnoremap u + + +"map el +"map hgel +"vnoremap e +"vnoremap b + + +" plugin hotkeys +map :TlistToggle| " bind TagList to Hotkey Ctrl+L +inoremap ( (| " when opening a bracket: call the OmniComplete function, display the menu, but deselect the first entry (C-p) + + +set makeprg=make\ test +nnoremap :!make| " classic key binding: press F5 to compile and execute (if you have a Makefile with make test doing that) + +"================================================================================ +" deactivated on-demand commands (just in case one needs them one day) +" +" code completion: http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE +" reacts on CTRL+P, CTRL+Space +"inoremap pumvisible() ? "\" : "\u\" +"inoremap pumvisible() ? "\" : "\" +"inoremap pumvisible() ? "\" : "\" +"inoremap pumvisible() ? "\" : "\" +"inoremap pumvisible() ? "\\\" : "\" +"inoremap pumvisible() ? "\\\" : "\" +" set guiheadroom=0| " do not fill non-functional area of the empty editor with gtk background +" map shift-right to visually select and so on +"nnoremap El +"nnoremap vl +"nnoremap vj +"nnoremap vk +"nnoremap vj +" noremap % v% " jump between braces and highlight +"nnoremap ^ +"vmap ^ +"nnoremap $ +"vmap $ +"nnoremap +"nnoremap +":inoremap pumvisible() ? "\" : "\u\" +"inoremap pumvisible() ? "\" : "\" " breaks cursor keys! +" binding ESC can easily break cursor key movement on the console (tricky, because gvim works) +"inoremap +"inoremap +" +"map OA k|map OB j|map OC l|map OD h| " allow cursor keys in insert mode -- cgit v1.2.3