set nocompatible filetype off " Plugins " Note: on most systems, this will make the plugins reside in \ " ~/.local/share/nvim/plugged/ let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' if empty(glob(data_dir . '/autoload/plug.vim')) silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin() " Powerline replacement Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " Tags Plug 'xolox/vim-misc' "Plugin 'ludovicchabant/vim-gutentags' Plug 'majutsushi/tagbar' " Templates Plug 'aperezdc/vim-template' " Selection expand Plug 'terryma/vim-expand-region' Plug 'kana/vim-textobj-user' Plug 'kana/vim-textobj-line' Plug 'kana/vim-submode' " Better Pasting Plug 'ConradIrwin/vim-bracketed-paste' " Tmux navigation Plug 'christoomey/vim-tmux-navigator' " YouCompleteMe Plug 'Valloric/YouCompleteMe' Plug 'rdnetto/YCM-Generator' " Git Plug 'tpope/vim-fugitive' " Comments Plug 'scrooloose/nerdcommenter' " Surround Plug 'tpope/vim-surround' " Snippets " Track the engine. Plug 'SirVer/ultisnips' " Snippets are separated from the engine. Add this if you want them: Plug 'honza/vim-snippets' Plug 'ervandew/supertab' "Buftabeline "Plug 'ap/vim-buftabline' " Highlight matching xml tags Plug 'Valloric/MatchTagAlways' "Javascript Plug 'pangloss/vim-javascript' " Tex Plug 'lervag/vimtex' "Go Plug 'fatih/vim-go' call plug#end() " Run PlugInstall if there are missing plugins autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \| PlugInstall --sync | source $MYVIMRC \| endif filetype plugin indent on set cinkeys-=0# " Terminal emulator settings set termguicolors " Color configuration try source ~/.config/nvim/scheme.vim catch " Ignore non existing file endtry highlight Comment cterm=italic gui=italic syntax enable " enable syntax processing " Disable annoying bell set noerrorbells " Allow modelines at the beginning and end of a file set modeline " Key configuration let mapleader = "\" " Make space the leader key nnoremap w :w| " Write file nnoremap q :q| " Close file nnoremap s :w !sudo tee %L nmap V| " Change to visual line mode map q: :q| " No command history nmap O | " Add line above nmap o| " Add line below nmap f gq}| " Format paragraph " Window management nmap mt :tab sp | " maximize window to new tab nmap . = | " Split windows equally map gb :bnext map gB :bNext call submode#enter_with('grow/shrink', 'n', '', 'r', '') call submode#map('grow/shrink', 'n', '', '+', '+') call submode#map('grow/shrink', 'n', '', '-', '-') call submode#map('grow/shrink', 'n', '', '<', '<') call submode#map('grow/shrink', 'n', '', '>', '>') set splitbelow set splitright "disable submode timeouts: let g:submode_timeout = 0 " don't consume submode-leaving key let g:submode_keep_leaving_key = 1 " Configuration of spaces and tabs set tabstop=4 " show 4 spaces per TAB set softtabstop=4 " insert 4 spaces per TAB set smarttab set expandtab " tabs are spaces set shiftwidth=4 " UI set number " show line numbers set relativenumber "relative line numbers set showcmd " show last command in bottom bar set cursorline " highlight current line " Statusline set statusline+=%f\ " show Filepath set statusline+=[%{strlen(&fenc)?&fenc:'none'}] "file encoding set statusline+=%m%r " Modified and read only flag set statusline+=%= " align left set statusline+=%y " show Filetype set statusline+=[%{&fo}] " Show format options set laststatus=2 " always show statusline " Filetypes filetype on " filetype detection on filetype indent on " filetype-specific indent .vim/indent/ filetype plugin on " filteype plugins in .vim/ftplugins set smartindent set wildmenu " visual autocomplete for command menu set lazyredraw " redraw only when necessary set showmatch " highlight matching brackets set mouse=a " Mouse control " Searching set incsearch " search while entering set hlsearch " highlight matches nnoremap h :set hlsearch! set ignorecase set smartcase " Line wrapping set tw=100 " set textwidth of 100 characters set formatoptions-=t " Don't wrap code set formatoptions+=c " Wrap comments set formatoptions+=mB " Don't break multibyte characters set formatoptions+=j " Remove multiple comment markers function TextWrapToggle() if &fo =~'t' setlocal fo-=t else setlocal fo+=t endif let formatoptions = &formatoptions echom formatoptions endfunction nmap t :call TextWrapToggle() " Highlight characters past 80 "augroup vimrc_autocmds "autocmd BufEnter * highlight OverLength ctermbg=88 guibg=#592929 "autocmd BufEnter * match OverLength /\%81v.*/ "augroup END "Copying set clipboard=unnamedplus,unnamed " Copy/Paste " Airline let g:airline_powerline_fonts = 1 " TagBar nmap :TagbarToggle imap :TagbarTogglegi nmap T " YouCompleteMe let g:ycm_collect_identifiers_from_tags_files = 1 " Read from tag files let g:ycm_global_ycm_extra_conf = '~/.config/nvim/.ycm_extra_conf.py' " Standard conf let g:ycm_enable_diagnostic_signs = 0 " Do not show semantic error bar let g:ycm_server_python_interpreter = 'python3' let g:ycm_key_list_select_completion = ['', '', ''] let g:ycm_key_list_previous_completion = ['', '', ''] "Tags let g:easytags_async = 1 " make set switchbuf=split "autocmd QuickFixCmdPre make set cmdheight=2 "autocmd QuickFixCmdPost make nested cwindow "Open the quickfix window "autocmd QuickFixCmdPost make nested lwindow "Change to the quickfix window "nmap :silent! make:redraw! "nmap m :silent! make:redraw! "nmap x :silent! make ex:redraw! "imap :make:redraw!i " vim-templates config-file try source ~/.config/nvim/.vimrc_config_template catch " Ignore non existing file endtry " Expand region vmap v (expand_region_expand) vmap (expand_region_shrink) " Snippets let g:SuperTabDefaultCompletionType = '' let g:SuperTabCrMapping = 0 let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" let g:UltiSnipsEditSplit="vertical" set rtp+=~/.config/nvim/my-snippets " Folding set foldmethod=syntax set foldlevel=100 " Use F9 to toggle folding inoremap za nnoremap za onoremap za vnoremap zf nnoremap a za onoremap a za vnoremap a zf try source ~/.config/nvim/.vimrc_config_expand_region catch " Ignore non existing file endtry " Extra stuff try source ~/.config/nvim/.vimrc_config_extra_stuff catch " Ignore non existing file endtry let g:tex_flavor = "latex" autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab if has("macunix") " Required for virtualenvs let g:python3_host_prog="/usr/local/bin/python3" endif