dotfiles/.config/vim/.vimrc

290 lines
7.3 KiB
VimL
Raw Normal View History

2016-01-24 19:32:42 +01:00
set nocompatible
2021-11-12 12:30:00 +01:00
syntax on
2019-10-04 12:30:18 +02:00
let VIMHOME = split(&rtp, ",")[0]
let $VIMHOME = VIMHOME
" vim-plug
call plug#begin(VIMHOME."/plugs")
2022-07-01 16:15:48 +02:00
" Plug 'Valloric/YouCompleteMe'
2022-07-01 23:29:26 +02:00
Plug 'nixprime/cpsm', {'do': './install.sh'}
Plug 'kien/ctrlp.vim'
2022-06-29 19:17:49 +02:00
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'ervandew/supertab'
2022-04-17 11:53:15 +02:00
Plug 'neoclide/coc.nvim', {'branch': 'release'}
2019-10-04 12:30:18 +02:00
Plug 'ConradIrwin/vim-bracketed-paste'
2021-11-12 12:30:00 +01:00
Plug 'NLKNguyen/papercolor-theme'
2019-10-04 12:30:18 +02:00
Plug 'Shougo/deoplete.nvim'
Plug 'christoomey/vim-tmux-navigator'
Plug 'cohama/lexima.vim', {'do': 'sed -i \"s/has(.nvim.) && //\" autoload/lexima/insmode.vim'}
Plug 'editorconfig/editorconfig-vim'
Plug 'gmarik/Vundle.vim'
Plug 'hdima/python-syntax'
Plug 'jeetsukumaran/vim-buffergator'
Plug 'kristijanhusak/vim-hybrid-material'
2022-04-17 11:53:15 +02:00
Plug 'lambdalisue/fern.vim'
2021-11-12 12:30:00 +01:00
Plug 'lervag/vimtex'
Plug 'neovimhaskell/haskell-vim'
Plug 'nvie/vim-flake8'
2019-10-04 12:30:18 +02:00
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'pangloss/vim-javascript'
2021-11-12 12:30:00 +01:00
Plug 'posva/vim-vue'
2022-04-17 11:53:15 +02:00
Plug 'rhysd/vim-grammarous'
2021-11-12 12:30:00 +01:00
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
2019-10-04 12:30:18 +02:00
Plug 'tmux-plugins/vim-tmux'
Plug 'tmux-plugins/vim-tmux-focus-events'
Plug 'tomtom/tcomment_vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
2021-11-12 12:30:00 +01:00
Plug 'vim-scripts/indentpython.vim'
2022-04-17 11:53:15 +02:00
Plug 'vimwiki/vimwiki'
2019-10-04 12:30:18 +02:00
call plug#end()
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
2016-01-24 19:32:42 +01:00
let mapleader=","
2022-07-01 15:02:57 +02:00
2016-09-03 15:46:24 +02:00
:command W w
:command Q q
:command WQ wq
:command Wq wq
2017-01-06 16:48:51 +01:00
nnoremap j gj
nnoremap k gk
2022-04-17 11:53:15 +02:00
nnoremap <C-U> <C-O>
nnoremap <C-E> <C-U>
2016-09-03 15:46:24 +02:00
2017-01-06 16:48:51 +01:00
" don't store .swp files in the file's own directory
" neither for .ext~ files
2022-06-30 10:54:53 +02:00
set directory=/home/user/.vim/tmp/
set backupdir=/home/user/.vim/tmp/
2021-11-12 12:30:00 +01:00
" VimWiki
let g:vimwiki_key_mappings = { 'table_mappings': 0 }
let g:vimwiki_markdown_link_ext = 1
autocmd FileType vimwiki setlocal shiftwidth=2 softtabstop=2 expandtab
2016-09-03 15:46:24 +02:00
" Autoindent for filetype
2016-01-24 19:32:42 +01:00
filetype plugin indent on
set autoindent
set encoding=utf-8
2016-09-03 15:46:24 +02:00
set scrolloff=5
set sidescrolloff=10
set completeopt-=preview
set backspace=indent,eol,start
2019-10-04 12:30:18 +02:00
" Splits
set splitbelow
set splitright
2016-09-03 15:46:24 +02:00
" CtrlP
2022-07-01 23:29:26 +02:00
let g:ctrlp_match_func = {'match': 'cpsm#CtrlPMatch'}
nnoremap <silent> <C-o> :CtrlPBuffer<CR>
let g:cpsm_unicode=1
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
2016-01-24 19:32:42 +01:00
" Unsaved buffer switching
set hidden
" Line numbering
set number
2016-09-03 15:46:24 +02:00
set numberwidth=4
:set mouse=a
2017-01-06 16:48:51 +01:00
" Allow xterm-key usage inside tmux
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
2016-01-24 19:32:42 +01:00
" Persistent undo
2016-09-03 15:46:24 +02:00
set undodir=~/.vim/undodir/
2016-01-24 19:32:42 +01:00
set undofile
set undolevels=1000
set undoreload=10000
" Searching
set ignorecase
set smartcase
set incsearch
set hlsearch
nnoremap <leader><space> :noh<CR>
" Text wrapping
set lbr
2021-11-12 12:30:00 +01:00
" Vimtex
let g:tex_flavor = 'latex'
2016-01-24 19:32:42 +01:00
" Tabs
if has("autocmd")
filetype plugin indent on
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" Terminal colors
set t_Co=256
2019-10-04 12:30:18 +02:00
set background=dark
2017-01-06 16:48:51 +01:00
let g:airline_theme="solarized"
2019-10-04 12:30:18 +02:00
let g:airline_solarized_bg="dark"
2016-01-24 19:32:42 +01:00
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
2017-01-06 16:48:51 +01:00
" Commenting
nnoremap <silent> <leader>c :TComment<CR>
nnoremap <silent> <leader>C :TCommentBlock<CR>
vnoremap <silent> <leader>c :TCommentInline<CR>
vnoremap <silent> <leader>C :TCommentBlock<CR>
2016-01-24 19:32:42 +01:00
" Tab completion
set wildmode=longest,list
set wildmenu
set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 13
let g:airline_powerline_fonts = 1
set laststatus=2
set ttimeoutlen=50
2016-09-03 15:46:24 +02:00
" Color scheme
2016-01-24 19:32:42 +01:00
syntax enable
2016-09-03 15:46:24 +02:00
let python_highlight_all=1
2016-01-24 19:32:42 +01:00
let g:solarized_termcolors=256
2019-10-04 12:30:18 +02:00
colorscheme hybrid_material
" Remap u to y
vnoremap u y
" Save clipboard on quit
autocmd VimLeave * call system("xsel -ib", getreg('+'))
" Automatically remove trailing spaces
2021-11-12 12:30:00 +01:00
let blacklist = ['vimwiki']
autocmd BufWritePre * if index(blacklist, &ft) < 0 | :%s/\s\+$//e
2019-10-04 12:30:18 +02:00
" Use deoplete.
autocmd FileType python let g:deoplete#enable_at_startup = 1
" VPW: set filetype for .py3
autocmd BufRead,BufNewFile *.py3 set filetype=python
" Vue indent
autocmd FileType vue setlocal shiftwidth=2 softtabstop=2 expandtab
autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 expandtab
autocmd FileType vue syntax sync fromstart
" Disable shift+k for manual lookup
map <S-k> <Nop>
" Prolog: set filetype for .pl
autocmd BufRead,BufNewFile *.pl set filetype=prolog
" Disable modelines, fix CVE
set modelines=0
set nomodeline
" Coc extensions
2022-07-01 15:02:57 +02:00
set updatetime=300
set shortmess+=c
if has("nvim-0.5.0") || has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif
2019-10-04 12:30:18 +02:00
let g:coc_global_extensions = []
command! -nargs=1 Ext :call add(g:coc_global_extensions, <args>)
2022-07-01 15:02:57 +02:00
let g:coc_filetype_map = {'tex': 'latex', 'md': 'markdown'}
nmap <silent> <leader>p <Plug>(coc-diagnostic-prev)
nmap <silent> <leader>n <Plug>(coc-diagnostic-next)
2022-07-01 16:15:48 +02:00
nmap <silent> <leader>f <Plug>(coc-codeaction-line)
vmap <silent> <leader>f <Plug>(coc-codeaction-line)
2022-07-01 23:29:26 +02:00
nmap <buffer> gd <plug>(lsp-definition)
2022-07-01 15:02:57 +02:00
nnoremap <Leader>p :CocList yank<CR>
vnoremap <Leader>p :CocList yank<CR>
2019-10-04 12:30:18 +02:00
Ext 'coc-snippets'
Ext 'coc-emoji'
Ext 'coc-highlight'
Ext 'coc-emmet'
2022-06-29 19:17:49 +02:00
" Ext 'coc-omnisharp'
2019-10-04 12:30:18 +02:00
Ext 'coc-vimtex'
Ext 'coc-json'
Ext 'coc-java'
2022-06-29 19:17:49 +02:00
Ext 'coc-pyright'
2022-07-01 15:02:57 +02:00
Ext 'coc-css'
Ext 'coc-html'
Ext 'coc-cmake'
Ext 'coc-clangd'
Ext 'coc-docker'
Ext 'coc-fzf-preview'
Ext 'coc-ltex'
Ext 'coc-vetur'
Ext 'coc-yank'
" Ext 'coc-sh'
" FZF Preview
nnoremap <silent> <Leader>/ :<C-u>CocCommand fzf-preview.Lines --add-fzf-arg=--no-sort --add-fzf-arg=--query="'"<CR>
nnoremap <silent> <C-f> :<C-u>CocCommand fzf-preview.ProjectGrepRecall<CR>
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
2019-10-04 12:30:18 +02:00
delc Ext
2017-01-06 16:48:51 +01:00
2022-06-29 19:17:49 +02:00
" Language Server
if executable('pyls')
" pip install python-language-server
au User lsp_setup call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': {server_info->['pyls']},
\ 'allowlist': ['python'],
\ })
endif
function! s:on_lsp_buffer_enabled() abort
setlocal omnifunc=lsp#complete
setlocal signcolumn=yes
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
nmap <buffer> gs <plug>(lsp-document-symbol-search)
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
nmap <buffer> gr <plug>(lsp-references)
nmap <buffer> gi <plug>(lsp-implementation)
nmap <buffer> gt <plug>(lsp-type-definition)
nmap <buffer> <leader>rn <plug>(lsp-rename)
nmap <buffer> [g <plug>(lsp-previous-diagnostic)
nmap <buffer> ]g <plug>(lsp-next-diagnostic)
nmap <buffer> K <plug>(lsp-hover)
nnoremap <buffer> <expr><c-f> lsp#scroll(+4)
nnoremap <buffer> <expr><c-d> lsp#scroll(-4)
let g:lsp_format_sync_timeout = 1000
autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync')
" refer to doc to add more commands
endfunction
augroup lsp_install
au!
" call s:on_lsp_buffer_enabled only for languages that has the server registered.
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END
2017-01-06 16:48:51 +01:00
2022-06-29 19:17:49 +02:00
" Tab for completion
let g:SuperTabContextDefaultCompletionType = "<c-n>"
let g:SuperTabDefaultCompletionType = "<c-n>"
2022-06-30 10:54:53 +02:00
" Go to Defintion CoC
nmap <buffer> gd :call CocActionAsync('jumpDefinition')<CR>