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