265 lines
6.6 KiB
VimL
265 lines
6.6 KiB
VimL
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 <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
|
|
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:…
|
|
|
|
" 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 / <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
|
|
|
|
" 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
|
|
|
|
" <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
|