" http://kastaneda.kiev.ua/desktop/dotrc/vim.html " общие настройки syntax on " включить подсветку синтаксиса set ts=4 " у меня табуляция (tabstop) 4 символа set tabstop=4 set shiftwidth=4 set textwidth=79 set tw=79 set colorcolumn=80,120,160 "set expandtab set autoindent set copyindent "set background=dark " весьма важная штука! :) set lbr set showcmd set nocompatible " обойдёмся без стандартного vi set backspace=indent,eol,start set nofixendofline colorscheme default hi DiffAdd ctermfg=white hi DiffChange ctermfg=white hi DiffDelete ctermfg=white hi DiffText ctermfg=white set number nmap :set invlist " set breakindent " https://www.linux.org.ru/forum/general/10615635?lastmod=1403800233259 " https://ru.wikibooks.org/wiki/Vim#%D0%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1_2 set langmap=ёйцукенгшщзхъфывапролджэячсмитьбю;`qwertyuiop[]asdfghjkl\\;'zxcvbnm\\,.,ЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;QWERTYUIOP{}ASDFGHJKL:\\"ZXCVBNM<> " Setup for the GNU coding format standard function! GnuIndent() setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1 setlocal shiftwidth=2 setlocal tabstop=4 endfunction " Setup for the CPP coding format standard function! CppIndent() setlocal shiftwidth=2 setlocal tabstop=2 setlocal expandtab set textwidth=119 set tw=119 set colorcolumn=120,160 endfunction " Setup for the Sh coding format standard function! ShIndent() setlocal shiftwidth=4 setlocal tabstop=4 setlocal noexpandtab endfunction " Setup for the Vala coding format standard function! ValaIndent() setlocal shiftwidth=4 setlocal tabstop=4 setlocal noexpandtab set textwidth=119 set tw=119 set colorcolumn=120,160 endfunction hi ColorColumn ctermbg=lightgrey guibg=lightgrey au FileType c call GnuIndent() au FileType cpp call CppIndent() au FileType vala,vapi call ValaIndent() au FileType sh call ShIndent() " отключение бэкапов set nobackup " set backup " set backupdir=$HOME/.vim/backups " set directory=$HOME/.vim/temp " чтобы курсор не прыгал, а вёл себя так, как kwrite и т.п. nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk nnoremap gj nnoremap gk vnoremap gj vnoremap gk inoremap gj inoremap gk " файлы автоматом делаются исполняемыми function ModeChange() if getline(1) =~ "^#!" if getline(1) =~ "/bin/" silent !chmod a+x endif endif endfunction au BufWritePost * call ModeChange() " интуитивные горячие клавиши =) imap :setnu!a nmap :setnu! nmap :w vmap :wi imap :wi nmap :q! vmap :q!i imap :q!i " вкладки :set tabpagemax=99 nmap :tabnew imap :tabnew map n :tabnext nmap n :tabnext imap n :tabnext map p :tabprev nmap p :tabprev imap p :tabprev " кириллица set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 set wildmenu set wcm= menu Encoding.CP1251 :e ++enc=cp1251 menu Encoding.CP866 :e ++enc=cp866 menu Encoding.KOI8-U :e ++enc=koi8-u menu Encoding.UTF-8 :e ++enc=utf-8 map :emenu Encoding. set fileencodings=utf-8,cp1251,cp866,koi8-r " вкл/выкл автоперенос set pastetoggle= " set paste " nmap :set noautoindent " imap :set noautoindent " nmap :set autoindent " imap :set autoindent " inoremap u:set paste.:set nopastegi " чтобы отступы не съезжали при вставке из буфера X Window " FONT SIZE SHORTCUTS set guifont=Liberation\ Mono\ 8 let g:MyFontSize = 8 function! ToggleMyFontSize() if ( g:MyFontSize == 10 ) let g:MyFontSize = 8 elseif ( g:MyFontSize == 8 ) let g:MyFontSize = 9 elseif ( g:MyFontSize == 9 ) let g:MyFontSize = 10 endif execute "set guifont=Liberation\\ Mono\\ ".g:MyFontSize endfunction nnoremap :call ToggleMyFontSize() " ctags/cscope let local_tags = ".ctags" let local_tags2 = "tags" let local_cscope = ".cscope.out" let local_cscope2 = "cscope.out" let local_path = "/" let current_path = getcwd() " If the current path is a child of $HOME directory, start from $HOME if current_path =~ $HOME let local_path = $HOME . local_path let current_path = substitute(current_path, $HOME, '', "") endif let path_parts = split(current_path, "/") for path_part in path_parts let local_path = local_path . path_part . "/" if filereadable(local_path . local_tags) exe ":set tags+=" . local_path . local_tags endif if filereadable(local_path . local_tags2) exe ":set tags+=" . local_path . local_tags2 endif if filereadable(local_path . local_cscope) exe "cs add" local_path . local_cscope endif if filereadable(local_path . local_cscope2) exe "cs add" local_path . local_cscope2 endif endfor unlet local_tags local_tags2 local_cscope local_cscope2 local_path current_path path_parts map [I:let nr = input("Which one: ")exe "normal " . nr ."[\t" " Foldging set foldenable set foldmethod=syntax " VUNDLE " set nocompatible " be iMproved filetype off " required! set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' " My Bundles here: " " original repos on github Bundle 'tpope/vim-fugitive' Bundle 'Lokaltog/vim-easymotion' "Bundle 'rstacruz/sparkup', {'rtp': 'vim/'} Bundle 'tpope/vim-rails.git' " vim-scripts repos Bundle 'L9' Bundle 'FuzzyFinder' Bundle 'vim-tags' " non github repos Bundle 'git://git.wincent.com/command-t.git' " ... Bundle 'majutsushi/tagbar' Bundle 'vim-startify' " Bundle 'clang-complete' Bundle 'scrooloose/nerdcommenter' " Bundle 'vim-scripts/OmniCppComplete' filetype plugin indent on " required! " " Brief help " :BundleList - list configured bundles " :BundleInstall(!) - install(update) bundles " :BundleSearch(!) foo - search(or refresh cache first) for foo " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles " " see :h vundle for more details or wiki for FAQ " NOTE: comments after Bundle command are not allowed.. " clang_complete " let g:clang_complete_copen = 1 " let g:clang_user_options='|| exit 0' filetype plugin on let g:clang_library_path="/usr/lib/llvm" let g:clang_user_options='|| exit 0' let g:clang_complete_auto = 1 let g:clang_complete_copen = 0 " ------- Vala -------- " Disable valadoc syntax highlight "let vala_ignore_valadoc = 1 " Enable comment strings let vala_comment_strings = 1 " Highlight space errors let vala_space_errors = 1 " Disable trailing space errors "let vala_no_trail_space_error = 1 " Disable space-tab-space errors let vala_no_tab_space_error = 1 " Minimum lines used for comment syncing (default 50) "let vala_minlines = 120 " ----- Vala taglist ------ " Work-around Tag List for Vala let tlist_vala_settings='c#;d:macro;t:typedef;n:namespace;c:class;'. \ 'E:event;g:enum;s:struct;i:interface;'. \ 'p:properties;m:method' " ----- TagBar ------ nmap :TagbarToggle let g:tagbar_ctags_bin = "anjuta-tags" " ----- NERDTree ------ nmap :NERDTreeToggle " ------- VimDiff ------- if &diff let mapleader = "," map dp1 :diffput LOCAL map dp2 :diffput BASE map dp3 :diffput REMOTE map do1 :diffget LOCAL map do2 :diffget BASE map do3 :diffget REMOTE endif