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