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' let &runtimepath = &runtimepath autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin() " Warn about plugin updates Plug 'semanser/vim-outdated-plugins' " 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' " 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' " 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 t_Co=256 "set term=screen-256color " Color configuration try source ~/.config/nvim/scheme.vim catch " Ignore non existing file endtry 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 " Delete without copying nnoremap d "_d xnoremap d "_d nnoremap x "_x xnoremap x "_x xnoremap p "_dP "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 "Tags let g:easytags_async = 1 " make set switchbuf=split " 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 filereadable(expand("~/python-envs/neovim/bin/python3")) let g:python3_host_prog="~/python-envs/neovim/bin/python3" else let g:python3_host_prog="/usr/bin/python3" endif