]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vimrc
Simpler Gvsplit substitution, without register polluting
[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 set nomodeline
12
13 set viminfo='100,<50,s10,f1,%,n~/secure/vim/info
14 set viewdir=~/secure/vim/view
15 set history=128
16 set directory=~/secure/vim/tmp
17 set undodir=~/secure/vim/undo
18 set undofile
19
20 set autoindent
21 set tabstop=4
22 set shiftwidth=4
23 set smarttab
24 set expandtab
25 set nojoinspaces
26 set scrolloff=2
27 set backspace=indent,eol
28 set shortmess=aoOtI
29 set highlight-=v:Visual
30 set highlight+=vr
31 set highlight+=sr
32 set cpoptions+=$
33 set showcmd
34 set showmatch
35 set listchars=trail:·,tab:>→,nbsp:% ",eol:¶
36 set list
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=**/_build/*,**/tags,**/.git,**/.hypothesis
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 highlight User1 ctermbg=blue ctermfg=black
72 highlight User2 ctermbg=green ctermfg=black
73 highlight User3 ctermbg=yellow ctermfg=black
74 highlight User4 ctermbg=red ctermfg=black
75 set laststatus=2
76 set statusline=%n\|%F%m%r%h%w%q\ %=
77 set statusline+=%1*%Y[%{strlen(&fenc)?&fenc:&enc},%{&ff}]
78 set statusline+=%2*[%l/%L]
79 set statusline+=%3*[%c%V:0x%B]
80 set statusline+=%4*%{LintStatus()}
81 set statusline+=%*\ %P
82
83 function! LintStatus() " it is overrided in ftplugins
84     return ""
85 endfunction
86 " }}}
87
88 " View saving {{{
89 autocmd BufWinLeave *.* mkview
90 autocmd BufWinEnter *.* silent loadview
91 " }}}
92
93 " Windows related {{{
94 noremap <C-j> <C-w>j
95 noremap <C-k> <C-w>k
96 noremap <C-l> <C-w>l
97 noremap <C-h> <C-w>h
98 nmap <leader>- <C-w>\|<C-w>_
99 nmap <leader>= <C-w>=
100 nmap <Del> :close<CR>
101 autocmd VimResized * wincmd =
102 " }}}
103
104 " Tmux window naming {{{
105 set titleold = ""
106 set title
107 autocmd BufEnter * let &titlestring = expand("%:t")
108 " }}}
109
110 " Fugitive {{{
111 nmap <F7> :Gvsplit <C-R><C-W><CR>zR
112 nmap <F9> :diffupdate<CR>:syntax off<CR>:syntax on<CR>
113 " }}}
114
115 " *-lists indentation and formatting {{{
116 set comments-=mb:*
117 set formatlistpat=^\\s*\\*\ \\s*
118 set formatoptions+=onj
119 " }}}
120
121 " Spelling {{{
122 set spelllang=ru,en_gb
123 highlight SpellBad cterm=inverse ctermfg=red ctermbg=black
124 " }}}
125
126 " Unimpaired-like textwidth switching {{{
127 nmap [ob :set textwidth=72<CR>
128 nmap ]ob :set textwidth=0<CR>
129 " }}}
130
131 " Often typos {{{
132 map q: :
133 command! W w
134 nmap <F1> :help!<CR>
135 imap <F1> <C-O>:help!<CR>
136 iabbrev итд и т.д.
137 iabbrev итп и т.п.
138 " }}}
139
140 set keywordprg=
141 let g:sh_no_error = 1
142
143 nmap <space> f<space>
144 vmap <space> I<space><ESC>gv
145 nmap _ f_l
146
147 nmap <leader>] "*yiw
148 nmap <leader>p "_diwP
149
150 nnoremap <leader>d "_d
151 vnoremap <leader>d "_d
152
153 cmap <C-O> <S-Left>
154 cmap <C-P> <S-Right>
155
156 map Q gq
157 map Y y$
158 cmap ][ '[,']
159 nmap <F2> :set wrap!<CR>:set wrap?<CR>
160 nmap <Tab> :buffers<CR>:buffer<Space>
161 nmap <silent> <Home> :registers<CR>
162 nmap <leader>' yiwciw"<C-r>""<ESC>
163 nmap <leader>h1 yypVr=o
164 nmap <leader>sc 024i-<ESC>a >8 <ESC>24a-<ESC>
165 nmap <leader><C-]> :vertical wincmd ]<CR>
166 nnoremap <C-P> <C-I>
167
168 command! E Explore
169 command! Ch cd %:p:h
170 command! -bar -nargs=? -bang Tmp :silent vnew<bang>|setlocal buftype=nofile bufhidden=hide noswapfile buflisted filetype=<args> modifiable