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 'scrooloose/syntastic' Plug 'tpope/vim-sleuth' Plug 'prabirshrestha/vim-lsp' " Language support Plug 'cespare/vim-toml' Plug 'hsanson/vim-android' Plug 'justmao945/vim-clang' 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' Plug 'artur-shaik/vim-javacomplete2' 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 <F4> :buffers<CR>:buffer<Space> " Gundo nnoremap <F9> :GundoToggle<CR> " Tagbar nmap <silent> <F8> :TagbarOpenAutoClose<CR> 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 au FileType text,markdown setlocal textwidth=80 au FileType python setlocal textwidth=79 nnoremap <silent> <F5> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar>:nohl<CR> " Trim trailing spaces set list listchars=tab:\ \ ,trail:•,precedes:…,extends:… " Line numbering set number " Search set ignorecase set smartcase map / <Plug>(incsearch-forward) map ? <Plug>(incsearch-backward) map g/ <Plug>(incsearch-stay) set hlsearch let g:incsearch#auto_nohlsearch = 1 map n <Plug>(incsearch-nohl-n) map N <Plug>(incsearch-nohl-N) map * <Plug>(incsearch-nohl-*) map # <Plug>(incsearch-nohl-#) map g* <Plug>(incsearch-nohl-g*) map g# <Plug>(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 <silent> <F4> :wa<CR>:split<CR>:terminal make run<CR> vnoremap <C-y> "+y inoremap <C-p> <ESC>"+pa map <silent> <F2> :set invpaste<CR> if has("nvim") tnoremap <A-h> <C-\><C-n><C-w>h tnoremap <A-j> <C-\><C-n><C-w>j tnoremap <A-k> <C-\><C-n><C-w>k tnoremap <A-l> <C-\><C-n><C-w>l endif nnoremap <A-h> <C-w>h nnoremap <A-j> <C-w>j nnoremap <A-k> <C-w>k nnoremap <A-l> <C-w>l nnoremap <silent> <C-t> :tabnew<CR> nnoremap <silent> <C-n> :tabnext<CR> nnoremap <silent> <C-p> :tabprevious<CR> nnoremap <C-[> <C-t> map ; : """ 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 <C-n> :NERDTreeToggle<CR> 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 " <Tab> 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 <silent><expr><Tab> pumvisible() ? "\<Down>" \ : (neosnippet#jumpable() ? "\<Plug>(neosnippet_jump)" \ : (<SID>is_whitespace() ? "\<Tab>" : deoplete#manual_complete())) smap <silent><expr><Tab> pumvisible() ? "\<Down>" \ : (neosnippet#jumpable() ? "\<Plug>(neosnippet_jump)" \ : (<SID>is_whitespace() ? "\<Tab>" : deoplete#manual_complete())) inoremap <expr><S-Tab> pumvisible() ? "\<Up>" : "\<C-h>" function! s:is_whitespace() "{{{ let col = col('.') - 1 return ! col || getline('.')[col - 1] =~? '\s' endfunction "}}} " }}} """ vim-javacomplete2 autocmd FileType java setlocal omnifunc=javacomplete#Complete