1
0
Fork 0
dotfiles/home/dot_vim/vimrc

253 lines
7.0 KiB
VimL
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

set nocompatible
" Syntax highlighting
syntax on
" Line numbering
set number
" Always show the signcolumn
set signcolumn=yes
" highlight
set cursorline
" Encoding
set encoding=UTF-8
" Auto-indentation
set ai
set tabstop=4
set shiftwidth=4
set expandtab
" Matching paren highlighting
set showmatch
" Sane colors
set background=dark
" Show cursor pos
set ruler
" Make the status line always show up
set laststatus=2
set ttimeoutlen=50
" Shut the annoying bell
set novisualbell
" Set the updatetime
set updatetime=500
" Case insensitive when all lowercase
set ignorecase
set smartcase
" Clipboard
set clipboard^=unnamed,unnamedplus
" Remap arrow keys
noremap <Up> <NOP>
noremap <Down> <NOP>
nnoremap <Left> :bprev<CR>
nnoremap <Right> :bnext<CR>
" write the file when you accidentally opened it without the right (root) privileges
cmap w!! w !sudo tee % > /dev/null
" Remember mouse cursor position
augroup resCur
autocmd!
autocmd BufReadPost * call setpos(".", getpos("'\""))
augroup END
" Plugins
let deinpath=$HOME.'/.vim/bundle/repos/github.com/Shougo/dein.vim'
let pluginpath=$HOME.'/.vim/bundle'
let &rtp.=','.deinpath
if dein#load_state(pluginpath)
call dein#begin(pluginpath)
"call dein#add(deinpath)
call dein#add('tpope/vim-sensible')
" Colorscheme
call dein#add('https://git.sr.ht/~ackyshake/spacegray.vim')
" Interface
call dein#add('itchyny/lightline.vim')
call dein#add('mgee/lightline-bufferline')
call dein#add('ryanoasis/vim-devicons')
call dein#add('airblade/vim-gitgutter')
call dein#add('scrooloose/nerdtree')
call dein#add('Yggdroot/indentLine')
" Movement
call dein#add('christoomey/vim-tmux-navigator')
"call dein#add('easymotion/vim-easymotion')
call dein#add('unblevable/quick-scope')
" Tools / Commands
call dein#add('tpope/vim-surround')
call dein#add('jiangmiao/auto-pairs')
call dein#add('tpope/vim-endwise')
"call dein#add('chrisbra/unicode.vim')
call dein#add('ctrlpvim/ctrlp.vim')
"call dein#add('junegunn/fzf.vim')
call dein#add('tpope/vim-obsession')
" Linting / Completion
call dein#add('w0rp/ale')
call dein#add('Shougo/deoplete.nvim')
call dein#add('ervandew/supertab')
call dein#add('autozimu/LanguageClient-neovim', { 'rev': 'next', 'build': 'bash install.sh'})
" Language
call dein#add('sheerun/vim-polyglot')
call dein#end()
call dein#save_state()
endif
filetype plugin indent on
syntax enable
" Automatically install plugins
if dein#check_install()
call dein#install()
endif
" Color scheme
colorscheme spacegray
" 16 millions colors
"set termguicolors
" Disable background in terminal
hi Normal ctermbg=NONE
" Italic comments
highlight Comment cterm=italic
set t_ZH=
set t_ZR=
" deoplete
let g:deoplete#enable_at_startup = 1
" LanguageClient
set hidden
let g:LanguageClient_serverCommands = {
\ 'python': ['/usr/bin/pyls'],
\ 'sh': ['bash-language-server', 'start'],
\ 'terraform': ['/usr/bin/terraform-lsp'],
\ 'yaml': ['/usr/bin/yaml-language-server'],
\ }
nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> <F12> :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
" supertab
let g:SuperTabDefaultCompletionType = "<c-n>"
" ALE
let g:ale_sign_error = ''
let g:ale_sign_warning = ''
highlight ALEErrorSign ctermfg=Red
highlight ALEWarningSign ctermfg=Blue
highlight ALEError ctermfg=Red ctermbg=None cterm=underline
highlight ALEWarning ctermfg=Blue ctermbg=None cterm=underline
" nerdtree
map <C-n> :NERDTreeToggle<CR>
" ctrlp
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
" gitgutter
let g:gitgutter_realtime = 1
let g:gitgutter_eager = 0
let g:gitgutter_override_sign_column_highlight = 0
let g:gitgutter_grep = 'rg'
let g:gitgutter_sign_added = '+▐'
let g:gitgutter_sign_modified = '~▐'
let g:gitgutter_sign_removed = '-▐'
let g:gitgutter_sign_removed_first_line = '-▐'
let g:gitgutter_sign_modified_removed = '~▐'
highlight SignColumn ctermbg=None
highlight GitGutterAdd ctermfg=green
highlight GitGutterChange ctermfg=yellow
highlight GitGutterDelete ctermfg=red
highlight GitGutterChangeDelete ctermfg=red
" indentLine
let g:indentLine_faster = 1
let g:indentLine_color_term = 237
let g:indentLine_leadingSpaceEnabled = 1
let g:indentLine_char = '┆'
let g:indentLine_leadingSpaceChar = '·'
" lightline
set noshowmode
set showtabline=2
let g:lightline = {
\ 'colorscheme': 'wombat',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'readonly', 'filename' ],
\ [ 'ctrlpmark' ] ],
\ 'right': [ [ 'lineinfo' ],
\ [ 'percent' ],
\ [ 'linter_errors' ],
\ [ 'fileformat', 'fileencoding', 'filetype', 'linter_ok', 'linter_warnings' ] ],
\ },
\ 'component_expand': {
\ 'linter_warnings': 'LightlineLinterWarnings',
\ 'linter_errors': 'LightlineLinterErrors',
\ 'linter_ok': 'LightlineLinterOK'
\ },
\ 'component_type': {
\ 'readonly': 'error',
\ 'linter_errors': 'error',
\ 'linter_warning': 'warning',
\ },
\ 'component_function': {
\ 'filename': 'LightlineFilename',
\ },
\ }
"lightline-bufferline
let g:lightline#bufferline#show_number=2
let g:lightline#bufferline#number_map = {
\ 0: '⁰', 1: '¹', 2: '²', 3: '³', 4: '⁴',
\ 5: '⁵', 6: '⁶', 7: '⁷', 8: '⁸', 9: '⁹'
\ }
let g:lightline#bufferline#enable_devicons=1
let g:lightline#bufferline#min_buffer_count=2
let g:lightline.tabline = {'left': [['buffers']], 'right': []}
let g:lightline.component_expand = {'buffers': 'lightline#bufferline#buffers'}
let g:lightline.component_type = {'buffers': 'tabsel'}
function! LightlineFilename()
let filename = expand('%:t') !=# '' ? expand('%:t') : '[No Name]'
let modified = &modified ? ' +' : ''
return filename . modified
endfunction
function! LightlineLinterWarnings() abort
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? '' : printf('%d ', all_non_errors)
endfunction
function! LightlineLinterErrors() abort
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? '' : printf('%d ', all_errors)
endfunction
function! LightlineLinterOK() abort
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? '0 ' : ''
endfunction
autocmd User ALELint call s:MaybeUpdateLightline()
" Update and show lightline but only if it's visible (e.g., not in Goyo)
function! s:MaybeUpdateLightline()
if exists('#lightline')
call lightline#update()
end
endfunction