call plug#begin("~/.nvim/bundle") " Other Plug 'prabirshrestha/async.vim' " UI Plug 'Yggdroot/indentLine' Plug 'airblade/vim-gitgutter' Plug 'haya14busa/incsearch.vim' Plug 'mhinz/vim-startify' Plug 'ryanoasis/vim-devicons' Plug 'scrooloose/nerdtree' Plug 'sjl/gundo.vim' Plug 'tomasiser/vim-code-dark' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " Programming helpers Plug 'Chiel92/vim-autoformat' Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'godlygeek/tabular' Plug 'guns/xterm-color-table.vim' Plug 'majutsushi/tagbar' Plug 'prabirshrestha/vim-lsp' Plug 'scrooloose/syntastic' Plug 'tpope/vim-sleuth' Plug 'tpope/vim-surround' " Language support Plug 'artur-shaik/vim-javacomplete2' Plug 'cespare/vim-toml' Plug 'hsanson/vim-android' Plug 'justmao945/vim-clang' Plug 'martinda/Jenkinsfile-vim-syntax' Plug 'mitsuhiko/vim-jinja' Plug 'natebosch/vim-lsc' Plug 'plasticboy/vim-markdown' Plug 'posva/vim-vue' Plug 'rust-lang/rust.vim' Plug 'tikhomirov/vim-glsl' Plug 'udalov/kotlin-vim' call plug#end() " Misc set mouse=a set nowrap set shell=zsh set scrolloff=5 set ruler set backspace=2 set cursorline set hidden set wildmenu set wildmode=longest:full set splitright set splitbelow let &colorcolumn="+".join(range(1, 255), ",+") let mapleader="," set termguicolors nnoremap :buffers:buffer " Gundo nnoremap :GundoToggle " Tagbar nmap :TagbarOpenAutoClose let g:tagbar_sort = 0 " Airline set laststatus=2 if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_theme = 'codedark' let g:airline_left_sep = ' ' let g:airline_left_alt_sep = '| ' let g:airline_right_sep = '' let g:airline_right_alt_sep = '|' let g:airline_symbols.branch = '' let g:airline_symbols.readonly = '' let g:airline_symbols.linenr = '' let g:airline_symbols.maxlinenr = '' let g:airline_symbols.whitespace = 'Ξ' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = '' let g:airline#extensions#tabline#left_alt_sep = '|' let g:airline#extensions#tabline#show_tab_nr = 0 let g:airline#extensions#tabline#show_tab_type = 0 " Syntax coloring syntax enable set synmaxcol=1024 set background=dark colorscheme codedark hi WarningMsg ctermbg=0 hi YcmErrorSign ctermbg=18 ctermfg=1 hi YcmWarningSign ctermbg=18 ctermfg=3 " indentLine let g:indentLine_color_term = 20 let g:indentLine_char = '│' let g:indentLine_concealcursor = '' let g:indentLine_indentLevel = 25 let g:indentLine_fileType = ['vhdl'] " Startify let g:startify_session_dir = $HOME . '/.nvim/sessions' let g:startify_session_autoload = 1 let g:startify_session_persistence = 1 " Formatting set encoding=utf-8 set tabstop=8 set shiftwidth=4 set expandtab set autoindent set cino=:0 nnoremap :let _s=@/:%s/\s\+$//e:let @/=_s:nohl " Trim trailing spaces set list listchars=tab:\ \ ,trail:•,precedes:…,extends:… " Maximum line widths au FileType text,markdown setlocal textwidth=80 au FileType python setlocal textwidth=79 " Line numbering set number " Search set ignorecase set smartcase map / (incsearch-forward) map ? (incsearch-backward) map g/ (incsearch-stay) set hlsearch let g:incsearch#auto_nohlsearch = 1 map n (incsearch-nohl-n) map N (incsearch-nohl-N) map * (incsearch-nohl-*) map # (incsearch-nohl-#) map g* (incsearch-nohl-g*) map g# (incsearch-nohl-g#) " Undos set undofile set undodir=~/.nvim/undo set undolevels=1000 set undoreload=10000 " Completion set completeopt=menu,menuone,longest,preview let g:ycm_confirm_extra_conf = 0 let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_complete_in_comments = 1 let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_python_binary_path = 'python' """ Shortcuts "nnoremap :wa:split:terminal make run vnoremap "+y inoremap "+pa map :set invpaste if has("nvim") tnoremap h tnoremap j tnoremap k tnoremap l endif nnoremap h nnoremap j nnoremap k nnoremap l nnoremap :tabnew nnoremap :tabnext nnoremap :tabprevious nnoremap """ Cache set backupdir=~/.nvim/backup set directory=~/.nvim/backup """ Vimpager if exists("vimpager") au BufRead * set scrolloff=0 set noruler set nocursorline set colorcolumn= set nonumber au BufRead * set laststatus=0 let g:airline#extensions#tabline#enabled = 0 endif let vimpager_disable_ansiesc = 1 """ vim-markdown let g:vim_markdown_folding_disabled = 1 """ NerdTree map :NERDTreeToggle autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif """ vim-autoformat "au BufWrite * :Autoformat """ vim-lsc let g:lsc_server_commands = {'dart': 'dart_language_server'} """ Deoplete let g:deoplete#enable_at_startup = 1 """ vim-clang let g:clang_c_options = '-std=c11' let g:clang_cpp_options = '-std=c++17' """ syntastic let g:syntastic_cpp_compiler = 'clang++' let g:syntastic_cpp_compiler_options = '-std=c++17 -Wall -Wextra -pedantic' """ vim-lsc " C++/C if executable('clangd') au User lsp_setup call lsp#register_server({ \ 'name': 'clangd', \ 'cmd': {server_info->['clangd']}, \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'], \ }) endif " Python if executable('pyls') " pip install python-language-server au User lsp_setup call lsp#register_server({ \ 'name': 'pyls', \ 'cmd': {server_info->['pyls']}, \ 'whitelist': ['python'], \ }) endif " completion: " 1. If popup menu is visible, select and insert next item " 2. Otherwise, if within a snippet, jump to next input " 3. Otherwise, if preceding chars are whitespace, insert tab char " 4. Otherwise, start manual autocomplete imap pumvisible() ? "\" \ : (neosnippet#jumpable() ? "\(neosnippet_jump)" \ : (is_whitespace() ? "\" : deoplete#manual_complete())) smap pumvisible() ? "\" \ : (neosnippet#jumpable() ? "\(neosnippet_jump)" \ : (is_whitespace() ? "\" : deoplete#manual_complete())) inoremap pumvisible() ? "\" : "\" function! s:is_whitespace() "{{{ let col = col('.') - 1 return ! col || getline('.')[col - 1] =~? '\s' endfunction "}}} " }}} """ vim-javacomplete2 autocmd FileType java setlocal omnifunc=javacomplete#Complete