====== vim (vimrc) ====== ^ Documentation ^| ^Name:| vim (vimrc) | ^Description:| vim configuration | ^Modification date :|24/05/2018| ^Owner:|dodger| ^Notify changes to:| dodger | ^Tags:| | ====== Advanced vimrc (2022) edition====== I have additionally [[https://git.ciberterminal.net/public/vim_setup|created a repository]] with config files :-) ===== System Packages (not bundled) ===== ==== ubuntu ==== vim vim-addon-manager vim-airline vim-airline-themes vim-common vim-fugitive vim-nox vim-puppet vim-python-jedi vim-runtime vim-syntastic vim-syntax-docker vim-tiny vim-youcompleteme One line: apt install vim vim-addon-manager vim-airline vim-airline-themes vim-common vim-fugitive vim-nox vim-puppet vim-python-jedi vim-runtime vim-syntastic vim-syntax-docker vim-tiny vim-youcompleteme ===== Globals ===== This is the initial vimrc file. " ############################################## " GLOBAL CONFIG " ############################################## set encoding=utf-8 set nocompatible " We're running Vim, not Vi! " map leader with , to start combos let mapleader = "," I'm remaping the leader key for convenience... ===== vim-plug ===== Use [[https://github.com/junegunn/vim-plug|vim-plug]] as ''vundle'' is not maintained anymore... curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim ===== patogen ===== The official instructions from [[https://github.com/tpope/vim-pathogen]]: mkdir -p ~/.vim/autoload ~/.vim/bundle && \ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim echo "execute pathogen#infect()" >> ~/.vimrc ===== PlugInstall command ===== Add to ''~/.vimrc'': call plug#begin() " The default plugin directory will be as follows: " - Vim (Linux/macOS): '~/.vim/plugged' " - Vim (Windows): '~/vimfiles/plugged' " - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged' " You can specify a custom plugin directory by passing it as the argument " - e.g. `call plug#begin('~/.vim/plugged')` " - Avoid using standard Vim directory names like 'plugin' " Make sure you use single quotes " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align Plug 'junegunn/vim-easy-align' " Any valid git URL is allowed Plug 'https://github.com/junegunn/vim-github-dashboard.git' " Multiple Plug commands can be written in a single line using | separators Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' " On-demand loading Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " Using a non-default branch Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) Plug 'fatih/vim-go', { 'tag': '*' } " Plugin options Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' } " Plugin outside ~/.vim/plugged with post-update hook Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " Unmanaged plugin (manually installed and updated) "Plug '~/my-prototype-plugin' Plug 'tpope/vim-sensible' Plug 'junegunn/seoul256.vim' Plug 'vim-syntastic/syntastic' Plug 'mbbill/undotree' " Initialize plugin system call plug#end() Then call the installation: :PlugInstall That will install all the above plugins: * ''junegunn/vim-easy-align'' * ''https://github.com/junegunn/vim-github-dashboard.git'' * ''SirVer/ultisnips'' * ''scrooloose/nerdtree'', * ''tpope/vim-fireplace'', * ''rdnetto/YCM-Generator'', * ''fatih/vim-go'', * ''nsf/gocode'', * ''junegunn/fzf'', * ''tpope/vim-sensible'' * ''junegunn/seoul256.vim'' * ''vim-syntastic/syntastic'' * ''mbbill/undotree'' ===== Additional syntax/configs ===== ==== Tagbar ==== Used for function/classes navigation [https://preservim.github.io/tagbar/|link]. cd ~/.vim/bundle git clone https://github.com/preservim/tagbar.git And add to ''~/.vimrc'': " tagbar nmap :TagbarToggle ==== terraform syntax ==== From [[https://github.com/hashivim/vim-terraform]] using ''patogen'': git clone https://github.com/hashivim/vim-terraform.git ~/.vim/bundle/vim-terraform ==== Puppet syntax ==== From [[https://github.com/rodjek/vim-puppet]] using ''pathogen'' : git clone https://github.com/rodjek/vim-puppet.git ~/.vim/bundle/vim-puppet ===== Plugin config files ===== " NERD commenter source ~/.vim/pluginconf/nerd_commenter.vim " syntastic source ~/.vim/pluginconf/syntastic.vim " undotree source ~/.vim/pluginconf/undotree.vim " nerdtree source ~/.vim/pluginconf/nerdtree.vim " Create default mappings let g:NERDCreateDefaultMappings = 1 " Add spaces after comment delimiters by default let g:NERDSpaceDelims = 1 " Use compact syntax for prettified multi-line comments let g:NERDCompactSexyComs = 1 " Align line-wise comment delimiters flush left instead of following code indentation let g:NERDDefaultAlign = 'left' " Set a language to use its alternate delimiters by default let g:NERDAltDelims_java = 1 " Add your own custom formats or override the defaults let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } " Allow commenting and inverting empty lines (useful when commenting a region) let g:NERDCommentEmptyLines = 1 " Enable trimming of trailing whitespace when uncommenting let g:NERDTrimTrailingWhitespace = 1 " Enable NERDCommenterToggle to check all selected lines is commented or not let g:NERDToggleCheckAllLines = 1 " map leader with , to start combos let mapleader = "," " , " / \,,_ .'| " ,{{| /}}}}/_.' _____________________________________________ " }}}}` '{{' '. / \ " {{{{{ _ ;, \ / Ladies and Gentlemen, \ " ,}}}}}} /o`\ ` ;) | | " {{{{{{ / ( | this is ... | " }}}}}} | \ | | " {{{{{{{{ \ \ | | " }}}}}}}}} '.__ _ | | _____ __ __ _ | " {{{{{{{{ /`._ (_\ / | / ___/__ ______ / /_____ ______/ /_(_)____ | " }}}}}}' | //___/ --=: \__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ | " jgs `{{{{` | '--' | ___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ | " }}}` | /____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ | " | /____/ | " | / " \_____________________________________________/ " set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 " https://github.com/mbbill/undotree/blob/master/plugin/undotree.vim "================================================= "Options: " Window layout " style 1 " +----------+------------------------+ " | | | " | | | " | undotree | | " | | | " | | | " +----------+ | " | | | " | diff | | " | | | " +----------+------------------------+ " Style 2 " +----------+------------------------+ " | | | " | | | " | undotree | | " | | | " | | | " +----------+------------------------+ " | | " | diff | " | | " +-----------------------------------+ " Style 3 " +------------------------+----------+ " | | | " | | | " | | undotree | " | | | " | | | " | +----------+ " | | | " | | diff | " | | | " +------------------------+----------+ " Style 4 " +-----------------------++----------+ " | | | " | | | " | | undotree | " | | | " | | | " +------------------------+----------+ " | | " | diff | " | | " +-----------------------------------+ if !exists('g:undotree_WindowLayout') let g:undotree_WindowLayout = 2 endif if has("persistent_undo") let target_path = expand('~/.vim/undodir') " create the directory and any parent directories " if the location does not exist. if !isdirectory(target_path) call mkdir(target_path, "p", 0700) endif let &undodir=target_path set undofile endif nnoremap u :UndotreeToggle **Disabled, using FZF** nnoremap n :NERDTreeFocus nnoremap :NERDTree nnoremap :NERDTreeToggle nnoremap :NERDTreeFind FZF: " https://github.com/junegunn/fzf/blob/master/README-VIM.md nnoremap f :FZF let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' } ===== Cheatsheet generated ===== In my config: * ''leader'' is '','' * '''' is control key ^ ##############'''Shortcut'''############## ^ ##############''command executed''############## ^ ------------------------------------------------------------------ ^ |''f'' | '':FZF'' | Open ''fzf'' | | inside fzf -> '' '' | ''g:fzf_action 'tab split''' | Tab split selected file | | inside fzf -> '' '' | ''g:fzf_action 'split''' | split selected file | | inside fzf -> '' '' | ''g:fzf_action 'vsplit''' | vsplit selected file | |''u'' | '':UndotreeToggle'' | Toggle Undotree pannel | |''b'' | '':BuffergatorOpen'' | Open Buffergator pannel | | ''[count]cc'' | '':NERDCommenterComment'' | Comment out the current line or text selected in visual mode. | | ''[count]cn'' | '':NERDCommenterNested'' | Same as cc but forces nesting. | | ''[count]c'' | '':NERDCommenterToggle'' | Toggles the comment state of the selected line(s). If the topmost selected line is commented, all selected lines are uncommented and vice versa. | | ''[count]cm'' | '':NERDCommenterMinimal'' | Comments the given lines using only one set of multipart delimiters. | | ''[count]ci'' | '':NERDCommenterInvert'' | Toggles the comment state of the selected line(s) individually. | | ''[count]cs'' | '':NERDCommenterSexy'' | Comments out the selected lines with a pretty block formatted layout. | | ''[count]cy'' | '':NERDCommenterYank'' | Same as cc except that the commented line(s) are yanked first. | | ''c$'' | '':NERDCommenterToEOL'' | Comments the current line from the cursor to the end of line. | | ''cA'' | '':NERDCommenterAppend'' | Adds comment delimiters to the end of line and goes into insert mode between them. | | ''ca'' | '':NERDCommenterAltDelims'' | Switches to the alternative set of delimiters. | | ''[count]cl'' | '':NERDCommenterAlignLeft'' | Same as '':NERDCommenterComment'' except that the delimiters are aligned down the left side (cl) or both sides (cb). | | ''[count]cb'' | '':NERDCommenterAlignBoth'' | Same as '':NERDCommenterComment'' except that the delimiters are aligned down the left side (cl) or both sides (cb). | | ''[count]cu'' | '':NERDCommenterUncomment''| Uncomments the selected line(s). | ====== Simple vimrc ====== " URL: http://vim.wikia.com/wiki/Example_vimrc " Authors: http://vim.wikia.com/wiki/Vim_on_Freenode " Description: A minimal, but feature rich, example .vimrc. If you are a " newbie, basing your first .vimrc on this file is a good choice. " If you're a more advanced user, building your own .vimrc based " on this file is still a good idea. "------------------------------------------------------------ " Features {{{1 " " These options and commands enable some very useful features in Vim, that " no user should have to live without. " 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 " 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 " Enable syntax highlighting syntax on "------------------------------------------------------------ " Must have options {{{1 " " These are highly recommended options. " Vim with default settings does not allow easy switching between multiple files " in the same editor window. Users can use multiple split windows or multiple " tab pages to edit multiple files, but it is still best to enable an option to " allow easier switching between files. " " 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. set hidden " Note that not everyone likes working this way (with the hidden option). " Alternatives include using tabs or split windows instead of re-using the same " window as mentioned above, and/or either of the following options: " set confirm " set autowriteall " Better command-line completion set wildmenu " Show partial commands in the last line of the screen set showcmd " Highlight searches (use to temporarily turn off highlighting; see the " mapping of below) set hlsearch " Modelines have historically been a source of security vulnerabilities. As " such, it may be a good idea to disable them and use the securemodelines " script, . " set nomodeline "------------------------------------------------------------ " Usability options {{{1 " " These are options that users frequently set in their .vimrc. Some of them " change Vim's behaviour in ways which deviate from the true Vi way, but " which are considered to add usability. Which, if any, of these options to " use is very much a personal preference, but they are harmless. " Use case insensitive search, except when using capital letters set ignorecase set smartcase " Allow backspacing over autoindent, line breaks and start of insert action set backspace=indent,eol,start " 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 " 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 " Display the cursor position on the last line of the screen or in the status " line of a window set ruler " Always display the status line, even if only one window is displayed set laststatus=2 " Instead of failing a command because of unsaved changes, instead raise a " dialogue asking if you wish to save changed files. set confirm " Use visual bell instead of beeping when doing something wrong 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= " Enable use of the mouse for all modes " set mouse=a " Set the command window height to 2 lines, to avoid many cases of having to " "press to continue" set cmdheight=2 " Display line numbers on the left set number " 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= "------------------------------------------------------------ " Indentation options {{{1 " " Indentation settings according to personal preference. " Indentation settings for using 4 spaces instead of tabs. " Do not change 'tabstop' from its default value of 8 with this setup. set shiftwidth=4 set softtabstop=4 set expandtab " Indentation settings for using hard tabs for indent. Display tabs as " four characters wide. "set shiftwidth=4 "set tabstop=4 "------------------------------------------------------------ " Mappings {{{1 " " Useful mappings " Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy, " which is the default map Y y$ " Map (redraw screen) to also turn off search highlighting until the " next search nnoremap :nohl "------------------------------------------------------------ ====== Advanced vimrc ====== ===== vundle & pathogen ===== Vundle is a plugin manager for vim.\\ [[https://linuxhint.com/vim-vundle-tutorial/|Very simple tutorial]] for initial steps. Official web: [[https://github.com/VundleVim/Vundle.vim]] \\ [[https://github.com/tpope/vim-pathogen|Pathogen]] is a runtime plugin manager mkdir -p ~/.vim/autoload ~/.vim/bundle curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim cd ~/.vim/bundle git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim This vimrc is just the beginning, at the end of this page will be a finished one! " ################################################## " 256 colors :-) set t_Co=256 " ################################################## " ################################################## " pathogen " ################################################## execute pathogen#infect() syntax on " " ################################################## " ################################################## " VUNDLE " ################################################## " ################################################## " set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub " dodger: Disabled, needs ruby "Plugin 'git://git.wincent.com/command-t.git' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " 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 " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line " " ################################################## " ################################################## " VUNDLE " ################################################## " ################################################## Then run **inside vim**: :PluginInstall ===== Plugins ===== Plugin config goes to: mkdir ~/.vim/pluginconf ==== neocomplcache ==== Using neocomplcache as: * [[https://github.com/Valloric/YouCompleteMe|YouCompleteMe]] needs vim8 * [[https://github.com/Shougo/neocomplete.vim|neocomplete]] needs LUA support (and centos' vim lack of it) Official documentation: * [[https://github.com/Shougo/neocomplcache.vim|Official web]] Add default config to: ~/.vim/pluginconf/neocomplcache.vim "Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)! " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' " Enable heavy features. " Use camel case completion. "let g:neocomplcache_enable_camel_case_completion = 1 " Use underbar completion. "let g:neocomplcache_enable_underbar_completion = 1 " Define dictionary. let g:neocomplcache_dictionary_filetype_lists = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplcache_keyword_patterns') let g:neocomplcache_keyword_patterns = {} endif let g:neocomplcache_keyword_patterns['default'] = '\h\w*' " Plugin key-mappings. inoremap neocomplcache#undo_completion() inoremap neocomplcache#complete_common_string() " Recommended key-mappings. " : close popup and save indent. inoremap =my_cr_function() function! s:my_cr_function() return neocomplcache#smart_close_popup() . "\" " For no inserting key. "return pumvisible() ? neocomplcache#close_popup() : "\" endfunction " : completion. inoremap pumvisible() ? "\" : "\" " , : close popup and delete backword char. inoremap neocomplcache#smart_close_popup()."\" inoremap neocomplcache#smart_close_popup()."\" inoremap neocomplcache#close_popup() inoremap neocomplcache#cancel_popup() " Close popup by . "inoremap pumvisible() ? neocomplcache#close_popup() : "\" " For cursor moving in insert mode(Not recommended) "inoremap neocomplcache#close_popup() . "\" "inoremap neocomplcache#close_popup() . "\" "inoremap neocomplcache#close_popup() . "\" "inoremap neocomplcache#close_popup() . "\" " Or set this. "let g:neocomplcache_enable_cursor_hold_i = 1 " Or set this. "let g:neocomplcache_enable_insert_char_pre = 1 " AutoComplPop like behavior. "let g:neocomplcache_enable_auto_select = 1 " Shell like behavior(not recommended). "set completeopt+=longest "let g:neocomplcache_enable_auto_select = 1 "let g:neocomplcache_disable_auto_complete = 1 "inoremap pumvisible() ? "\" : "\\" " 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 " Enable heavy omni completion. if !exists('g:neocomplcache_force_omni_patterns') let g:neocomplcache_force_omni_patterns = {} endif let g:neocomplcache_force_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::' let g:neocomplcache_force_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' let g:neocomplcache_force_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' " For perlomni.vim setting. " https://github.com/c9s/perlomni.vim let g:neocomplcache_force_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::' And add to vimrc: source ~/.vim/pluginconf/neocomplcache.vim ==== YouCompleteMe ==== [[https://github.com/Valloric/YouCompleteMe#linux-64-bit|Official install guide]]: Pre-Requirements: * jdk for java completion * mono for c# completion * node.js for javascript completion apt-get install build-essential cmake python3-dev apt-get install apt-file apt-get install mono-devel mono-runtime apt-get install openjdk-8-jdk curl -sL https://deb.nodesource.com/setup_10.x | bash apt-get install -y nodejs python3 ./install.py --clang-completer --cs-completer --ts-completer --java-completer ==== UndoTree ==== * [[https://github.com/mbbill/undotree|Official web]] Make dir to store the changes: mkdir ~/.vim/undodir Add default config to: ~/.vim/pluginconf/undotree.vim if has("persistent_undo") set undodir=~/.vim/undodir/ set undofile endif And add to vimrc: source ~/.vim/pluginconf/undotree.vim ==== Syntastic ==== Syntastic is a syntax checking plugin for Vim.\\ [[https://github.com/vim-syntastic/syntastic|official github page]] Add default config to: ~/.vim/pluginconf/syntastic.vim " , " / \,,_ .'| " ,{{| /}}}}/_.' _____________________________________________ " }}}}` '{{' '. / \ " {{{{{ _ ;, \ / Ladies and Gentlemen, \ " ,}}}}}} /o`\ ` ;) | | " {{{{{{ / ( | this is ... | " }}}}}} | \ | | " {{{{{{{{ \ \ | | " }}}}}}}}} '.__ _ | | _____ __ __ _ | " {{{{{{{{ /`._ (_\ / | / ___/__ ______ / /_____ ______/ /_(_)____ | " }}}}}}' | //___/ --=: \__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ | " jgs `{{{{` | '--' | ___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ | " }}}` | /____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ | " | /____/ | " | / " \_____________________________________________/ " set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 And add to vimrc: source ~/.vim/pluginconf/syntastic.vim ==== python syntax check ==== As pre-requirement : * syntastic plugin * a syntax checker like [[https://pypi.org/project/pyflakes/|pyflakes]] (for example) So install pyflakes for example: yum -y install pyflakes Add this configfile to the pluginconf folder: let g:syntastic_python_checkers = ['pyflakes'] And add to vimrc: source ~/.vim/pluginconf/syntastic_python.vim ==== python omnicompletion ==== [[https://www.vim.org/scripts/script.php?script_id=1542|Official web]] Install: curl "https://www.vim.org/scripts/download_script.php?src_id=10872" > ~/.vim/pluginconf/pythoncomplete.vim echo "source ~/.vim/pluginconf/pythoncomplete.vim" >> ~/.vimrc ==== tagbar ==== [[https://github.com/majutsushi/tagbar|Official web]] Install: * clone the repo Add this configfile to the pluginconf folder: nmap :TagbarToggle And add to vimrc: source ~/.vim/pluginconf/tagbar.vim ==== airline ==== Webs: * [[https://github.com/vim-airline/vim-airline|Official web]] * [[https://github.com/vim-airline/vim-airline-themes|Official web for themes]] Install: * clone the repos Add this configfile to the pluginconf folder: if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_symbols.space = "\ua0" let g:airline_powerline_fonts = 1 let g:airline_theme='molokai' And add to vimrc: source ~/.vim/pluginconf/airline.vim ===== Special mapppings ===== I've remapped the ''leader'' key to '','' (instead of ''\'') with let mapleader = "," That way, we can add useful shortcuts like * '':UndoTreeToggle'' nnoremap u :UndotreeToggle * '':TagbarToggle'' nnoremap f :TagbarToggle ====== vim on debian ====== Some plugins requires vim to be compiled with ''+python'' BUT vim usually is not build with that option.\\ In debian (VDI) you can install ''vim-nox'' package. Then reconfigure system and choose it: update-alternatives --config editor