lsp_highlight_references_enabled is already enabled by default
[dotfiles.git] / vim / .vimrc
1 " vim: foldmethod=marker:foldlevel=0
2
3 set t_Co=16
4 syntax on
5 filetype on
6 filetype plugin on
7 set nocompatible
8 set encoding=utf-8
9 "set t_kD=\7f
10 set mouse="" " if Vim is compiled with mouse support
11
12 set viminfo='100,<50,s10,f1,%,n~/secure/vim/info
13 set viewdir=~/secure/vim/view
14 set history=128
15 set directory=~/secure/vim/tmp
16 set undodir=~/secure/vim/undo
17 set undofile
18
19 set autoindent
20 set tabstop=4
21 set shiftwidth=4
22 set smarttab
23 set expandtab
24 set nojoinspaces
25 set scrolloff=2
26 set backspace=indent,eol
27 set shortmess=aoOtI
28 set highlight-=v:Visual
29 set highlight+=vr
30 set highlight+=sr
31 set cpoptions+=$
32 set showcmd
33 set showmatch
34 set listchars=trail:·,tab:>→,nbsp:% ",eol:¶
35 set list
36 set completeopt-=preview
37 set diffopt+=indent-heuristic,algorithm:histogram
38
39 set cursorline
40 set cursorcolumn
41 set colorcolumn=80
42 highlight ExtraWhitespace ctermbg=green ctermfg=blue
43 match ExtraWhitespace /\s\+$/
44
45 set relativenumber
46 set numberwidth=3
47
48 set ignorecase
49 set smartcase
50 set hlsearch
51 set incsearch
52 set gdefault
53 set wildmode=longest:list
54 set tags=.tags/**/tags;
55 set wildignore=**/.git,**/.tags
56
57 set exrc
58 set secure
59
60 map <F4> :nohlsearch<CR>:MarkClear<CR>
61
62 " Folding {{{
63 set foldmethod=indent
64 set foldnestmax=9
65 set foldenable
66 set foldcolumn=1
67 set foldlevel=0
68
69 autocmd BufWinEnter * normal zR
70 highlight FoldColumn ctermfg=cyan ctermbg=black
71 highlight CursorColumn ctermfg=cyan ctermbg=red
72 " }}}
73
74 " Statusline {{{
75 set laststatus=2
76 set statusline=%F\ %m%r%h%w%q%k
77 set statusline+=%{len(getqflist())?'[Q]':''}
78 set statusline+=%{len(getloclist(0))?'[L]':''}
79 set statusline+=\ %=
80 set statusline+=%n\ %#Question#%Y
81 set statusline+=%#DiffChange#%{strlen(&fenc)?&fenc:&enc}%{&bomb?'-bom':''}\ %{&ff}
82 set statusline+=%#DiffAdd#%l/%L
83 set statusline+=%#Todo#%c%V:0x%B
84 set statusline+=%#Comment#%o
85 set statusline+=%#Error#%{LintStatus()}
86 set statusline+=%*\ %P
87
88 function! LintStatus() " it is overrided in ftplugins
89     return ""
90 endfunction
91 " }}}
92
93 " View saving {{{
94 autocmd BufWinLeave *.* mkview
95 autocmd BufWinEnter *.* silent loadview
96 " }}}
97
98 " Windows related {{{
99 nnoremap <C-b> <C-W>
100 noremap <C-j> <C-w>j
101 noremap <C-k> <C-w>k
102 noremap <C-l> <C-w>l
103 noremap <C-h> <C-w>h
104 nmap <leader>- <C-w>\|<C-w>_
105 nmap <leader>= <C-w>=
106 nmap <Del> :close<CR>
107 autocmd VimResized * wincmd =
108 " }}}
109
110 " Tmux window naming {{{
111 set titleold = ""
112 set title
113 autocmd BufEnter * let &titlestring = expand("%:t")
114 " }}}
115
116 " Fugitive {{{
117 nmap <F7> :Gvsplit <C-R><C-W><CR>zR
118 nmap <F9> :diffupdate<CR>:syntax off<CR>:syntax on<CR>
119 " }}}
120
121 " *-lists indentation and formatting {{{
122 set comments-=mb:*
123 set formatlistpat=^\\s*\\*\ \\s*
124 set formatoptions+=onj
125 " }}}
126
127 " Spelling {{{
128 set spelllang=ru,en_gb
129 highlight SpellBad cterm=inverse ctermfg=red ctermbg=black
130 highlight SpellLocal term=reverse ctermfg=red ctermbg=cyan
131 " }}}
132
133 " Unimpaired-like textwidth switching {{{
134 nmap [ob :set textwidth=72<CR>
135 nmap ]ob :set textwidth=0<CR>
136 " }}}
137
138 " Often typos {{{
139 map q: :
140 command! W w
141 nmap <F1> :help!<CR>
142 imap <F1> <C-O>:help!<CR>
143 iabbrev итд и т.д.
144 iabbrev итп и т.п.
145 " }}}
146
147 set keywordprg=
148 let g:sh_no_error = 1
149
150 set termwinkey=<C-B>
151
152 nmap <space> f<space>
153 vmap <space> I<space><ESC>gv
154 nmap _ f_l
155
156 nmap <leader>] "*yiw
157 nmap <leader>p "_diwP
158
159 nnoremap <leader>d "_d
160 vnoremap <leader>d "_d
161
162 cmap <C-O> <S-Left>
163 cmap <C-P> <S-Right>
164
165 map Q gq
166 map Y y$
167 cmap ][ '[,']
168 imap <C-b> <C-x><C-o>
169 nmap <F2> :set wrap!<CR>:set wrap?<CR>
170 nmap <Tab> :buffers<CR>:b<Space>
171 nmap <silent> <Home> :registers<CR>
172 nmap <leader>' yiwciw"<C-r>""<ESC>
173 nmap <leader>h1 yypVr=o
174 nmap <leader>sc 024i-<ESC>a >8 <ESC>24a-<ESC>
175 nmap <leader><C-]> :vertical wincmd ]<CR>
176 nnoremap <C-P> <C-I>
177
178 command! E Explore
179 command! Ch cd %:p:h
180 command! -bar -nargs=? -bang Tmp :silent vnew<bang>|setlocal buftype=nofile bufhidden=hide noswapfile buflisted filetype=<args> modifiable