" Install plugins automatically if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"')) echo "Downloading junegunn/vim-plug to manage plugins..." silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/ silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim autocmd VimEnter * PlugInstall endif " Vim-Plug (Plugins) call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"')) Plug 'airblade/vim-gitgutter' " Shows Git diff Plug 'preservim/nerdcommenter' " Language based comment syntax Plug 'preservim/nerdtree' " File manager (nerdtree) Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " Highlighting for nerdtree Plug 'joshdick/onedark.vim' " OneDark theme Plug 'ryanoasis/vim-devicons' " Icons for nerdtree and airline Plug 'vim-airline/vim-airline' " AirLine statusline Plug 'vim-airline/vim-airline-themes' " AirLine statusline themes Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } " Auto-completion [NVIM only] Plug 'neomake/neomake' " Syntax checking Plug 'zchee/deoplete-jedi' " Python jedi autocompletion Plug 'wakatime/vim-wakatime' " Wakatime integration for coding stats call plug#end() " Some basics filetype plugin on " Enable filetype detection syntax on " Turn on syntax highlighting set number relativenumber " Show relative line numbers set wildmode=longest,list,full " Enable autocompletion set undolevels=999 " Lots of these set history=1000 " More history set expandtab " Expand tabs to spaces (inverse: noexpandtab) set tabstop=4 " Tab size set shiftwidth=4 " Indentation size set softtabstop=4 " Tabs/Spaces interrop set tabpagemax=50 " More tabs set autoindent " Enable autoindent set cursorline " Highlight cursor line set noruler " Don't show ruler, line is highlighted by above set showmatch " Show matching brackets set ignorecase " Do case insensitive matching set incsearch " Show partial matches for a search phrase set hlsearch " Highlight Search set laststatus=2 " Always show status line set splitbelow splitright " Split in more natural way set autoread " Reload files on change set mouse=a " Enable mouse mode set encoding=utf-8 " Use UTF-8, not ASCII (May cause issues on TTY) set path+=** " Search down into subfolders with tab completion set wildmenu " Display all matching files when we tab complete set scrolloff=5 " Keep 5 lines horizontal scrolloff set sidescrolloff=5 " Keep 5 characters vertical scrolloff "set termguicolors " Use true colors (256) (May cause issues on TTY) " Move ~/.viminfo to XDG_CACHE_HOME "set viminfofile=$XDG_CACHE_HOME/vim/viminfo " Disable automatic commenting on newline autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o " Have Vim jump to the last position when reopening a file autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" " Automatically deletes all trailing whitespace on save autocmd BufWritePre * %s/\s\+$//e " Remap splits navigation to just CTRL + hjkl nnoremap h nnoremap j nnoremap k nnoremap l " Make adjusting split sizes a bit more friendly noremap :vertical resize +3 noremap :vertical resize -3 noremap :resize +3 noremap :resize -3 " Spell-check set to o, 'o' for 'orthography' map o :setlocal spell! spelllang=en_US " Stop search highlight (until next search) map :noh " System clipboard interactions map "+y vnoremap "+p " Unmap arrow keys in normal mode to remove bad habits nnoremap nnoremap nnoremap nnoremap " Use shift to move 10 lines up/down quickly noremap K 10k noremap J 10j " User interface / Theme colorscheme onedark set guioptions-=m " remove menubar set guioptions-=T " remove toolbar set guioptions-=r " remove right-hand scrollbar set guioptions-=L " remove left-hand scrollbar " Airline let g:airline_theme='onedark' let g:airline#extensions#tabline#enabled = 1 let g:airline#tabline#formatter = 'unique_tail' let g:webdevicons_enable_airline_statusline = 0 if empty($DISPLAY) " Automatically apply ASCII only config if we don't have DISPLAY (TTY) let g:airline_left_sep = '>' " Alternatively: '►' let g:airline_right_sep = '<' " Alternatively: '◄' let g:airline_symbols_ascii = 1 let g:webdevicons_enable_airline_tabline = 0 " don't use symbols from vim-devicons else let g:airline_left_sep = "\uE0B0" let g:airline_right_sep = "\uE0B2" let g:airline_powerline_fonts = 1 " use nice symbols from powerline fonts endif " Neomake " Requires: pip install flake8 let g:neomake_python_enabled_makers = ['flake8'] let g:neomake_python_flake8_maker = {'args': ['--ignore=E501', '--format=default']} call neomake#configure#automake('nrwi', 500) " Deoplete " Requires: pip install pynvim let g:deoplete#enable_at_startup = 1 " NERDTree map :NERDTreeToggle let g:NERDTreeDirArrowExpandable = '►' let g:NERDTreeDirArrowCollapsible = '▼' let NERDTreeShowLineNumbers=1 let NERDTreeShowHidden=1 let NERDTreeMinimalUI = 1 let g:NERDTreeWinSize=38 if empty($DISPLAY) " Disable devicons for nerdtree in TTY let g:webdevicons_enable_nerdtree = 0 endif