]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vimrc
gopls is too verbose
[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-=h
13 set viminfo+=f1,%,n~/secure/vim/info
14 set viewdir=~/secure/vim/view
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 completeopt-=preview
35 set diffopt+=indent-heuristic,algorithm:histogram
36
37 set cursorline
38 set cursorcolumn
39 set colorcolumn=80
40
41 set listchars=trail:·,tab:>→,nbsp:% ",eol:¶
42 set list
43 highlight ExtraWhitespace ctermbg=green ctermfg=blue
44 match ExtraWhitespace /\s\+$/
45
46 set relativenumber
47 set numberwidth=3
48
49 set ignorecase
50 set smartcase
51 set hlsearch
52 set incsearch
53 set gdefault
54 map <F4> :nohlsearch<CR>:MarkClear<CR>
55
56 set wildmode=list:longest
57 set tags=.tags/**/tags;
58 set wildignore=**/.git,**/.tags
59
60 set exrc
61 set secure
62
63 " Folding {{{
64 set foldmethod=indent
65 set foldnestmax=9
66 set foldenable
67 set foldcolumn=1
68 set foldlevel=0
69
70 autocmd BufWinEnter * normal zR
71 highlight FoldColumn ctermfg=cyan ctermbg=black
72 highlight CursorColumn ctermfg=cyan ctermbg=red
73 " }}}
74
75 " Statusline {{{
76 let MeinStatus = {-> exists("b:mein_status_func") ? b:mein_status_func() : ""}
77 set laststatus=2
78 set statusline=%F\ %m%r%h%w%k
79 set statusline+=%{len(getqflist())?'[Q]':''}
80 set statusline+=%{len(getloclist(0))?'[L]':''}
81 set statusline+=\ %=
82 set statusline+=%n\ %#Question#%Y
83 set statusline+=%#DiffChange#%{strlen(&fenc)?&fenc:&enc}%{&bomb?'-bom':''}\ %{&ff}
84 set statusline+=%#DiffAdd#%l/%L
85 set statusline+=%#Todo#%c%V:0x%B
86 set statusline+=%#Comment#%o
87 set statusline+=%#Error#%{MeinStatus()}
88 set statusline+=%*\ %P
89 " }}}
90
91 " View saving {{{
92 autocmd BufWinLeave ?* silent! if &ft !=# "gitcommit" | mkview | endif
93 autocmd BufWinEnter ?* silent! loadview
94 " }}}
95
96 " Windows related {{{
97 nnoremap <C-b> <C-W>
98 noremap <C-j> <C-w>j
99 noremap <C-k> <C-w>k
100 noremap <C-l> <C-w>l
101 noremap <C-h> <C-w>h
102 nmap <leader>- <C-w>\|<C-w>_
103 nmap <leader>= <C-w>=
104 nmap <Del> :close<CR>
105 autocmd VimResized * wincmd =
106 " }}}
107
108 " Tmux window naming {{{
109 set titleold = ""
110 set title
111 autocmd BufEnter * let &titlestring = expand("%:t")
112 " }}}
113
114 " Fugitive {{{
115 nmap <F7> :Gvsplit <C-R><C-W><CR>zR
116 nmap <F9> :diffupdate<CR>:syntax off<CR>:syntax on<CR>
117 " }}}
118
119 " *-lists indentation and formatting {{{
120 set comments-=mb:*
121 set formatlistpat=^\\s*\\*\ \\s*
122 set formatoptions+=onj
123 " }}}
124
125 " Spelling {{{
126 set spelllang=ru,en_gb
127 highlight SpellBad cterm=inverse ctermfg=red ctermbg=black
128 highlight SpellLocal term=reverse ctermfg=red ctermbg=cyan
129 " }}}
130
131 " Unimpaired-like textwidth switching {{{
132 nmap [ob :set textwidth=72<CR>
133 nmap ]ob :set textwidth=0<CR>
134 " }}}
135
136 " Often typos {{{
137 map q: :
138 command! W w
139 nmap <F1> :help!<CR>
140 imap <F1> <C-O>:help!<CR>
141 iabbrev итд и т.д.
142 iabbrev итп и т.п.
143 " }}}
144
145 set keywordprg=
146 let g:sh_no_error = 1
147 set termwinkey=<C-B>
148
149 nmap <space> f<space>
150 nmap _ f_l
151
152 nmap <leader>] "*yiw
153 nmap <leader>p "_diwP
154
155 nnoremap <leader>d "_d
156 vnoremap <leader>d "_d
157
158 map Q gq
159 cmap ][ '[,']
160 imap <C-b> <C-x><C-o>
161 imap <C-@> <C-x><C-f>
162 nmap <Tab> :buffers<CR>:b<Space>
163 nmap <silent> <Home> :registers<CR>
164 nmap <leader>' yiwciw"<C-r>""<ESC>
165 nmap <leader>h1 yypVr=o
166 nmap <leader>sc 024i-<ESC>a >8 <ESC>24a-<ESC>
167 nmap <leader><C-]> :vertical wincmd ]<CR>
168 nmap ZZ :wall<CR>:mksession!<CR>:qall<CR>
169 nnoremap <C-P> <C-I>
170
171 command! E Explore
172 command! Ch cd %:p:h
173 command! -bar -nargs=? -bang Tmp :silent vnew<bang>|setlocal buftype=nofile bufhidden=hide noswapfile buflisted filetype=<args> modifiable