1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
source /usr/share/vim/vim82/defaults.vim
source /etc/vimrc
let NERDTreeIgnore=['\.o$', '\.cmo$', '\.cmx$', '\.cmi$', '\.lib$', '\.pyc$', '^__pycache__$', '\.class$']
set encoding=utf-8
set cmdheight=2
if has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif
set exrc
set hlsearch
set number
set relativenumber
let mapleader=","
" Tab modes.
map <leader>m <Esc>:set expandtab ts=2 sw=2 sts=2<CR>
map <leader>t <Esc>:set noexpandtab ts=4 sw=4 sts=4<CR>
map <leader>T <Esc>:set expandtab ts=4 sw=4 sts=4<CR>
set pastetoggle=<F2>
" reload config
map <leader>c <Esc>:source ~/.vimrc<CR>
" FZF bindings
"
" map <leader>f <Esc>:FZF<CR>
map ; <Esc>:FZF<CR>
map \ <Esc>:Vista finder coc<CR>
map <leader>b <Esc>:Vista<CR>
" Diagnostic messages
map <leader>d <Esc>:CocDiagnostics<CR>
" map <leader>l <Esc>:ALENextWrap<CR>
nmap <silent> <leader>s <Plug>(coc-diagnostic-prev)
nmap <silent> <leader>f <Plug>(coc-diagnostic-next)
" map <C-n> <Esc>:cnext<CR>
" map <C-m> <Esc>:cprevious<CR>
" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window.
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
call CocActionAsync('doHover')
else
execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction
" tab completion (coc)
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Symbol renaming.
nmap <leader>rn <Plug>(coc-rename)
" Formatting selected code.
"xmap <leader>f <Plug>(coc-format-selected)
"nmap <leader>f <Plug>(coc-format-selected)
" Append modeline after last line in buffer.
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX
" files.
function! AppendModeline()
let l:modeline = printf(" vim: set sts=%d ts=%d sw=%d tw=%d %set :",
\ &softtabstop, &tabstop, &shiftwidth, &textwidth, &expandtab ? '' : 'no')
let l:modeline = substitute(&commentstring, "%s", l:modeline, "")
call append(line("$"), l:modeline)
endfunction
nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
filetype plugin indent on
set autoindent
set smartindent
set ts=4 sw=4
" indentation for long line wraps
set wrap
set linebreak
set breakindent
let &showbreak = '> '
set bg=dark
au FileType make setl noexpandtab
au FileType python setl sw=4 sts=4 et
au FileType html setl sw=2 sts=2 et
au FileType htmldjango setl sw=2 sts=2 et
au FileType json setl sw=2 sts=2 et
au FileType javascript setl sw=2 sts=2 et
au FileType yaml setl sw=2 sts=2 et
au FileType css setl sw=4 sts=4 et
au FileType lua setl ts=4 sw=4 noet
au FileType trema setl ts=2 sts=2 et
au FileType typescript.tsx setl ts=2 sts=2 et
au FileType rust setl ts=4 sw=4 noet
au FileType tex setl indentexpr= nosi ai sw=4 sts=4 et
let g:ale_linters = {'rust': ['analyzer']}
highlight Pmenu ctermbg=gray guibg=gray
colorscheme solarized8
|