summaryrefslogtreecommitdiffstats
path: root/.vimrc
blob: 34564cb1e0661417a67464c320ef6b93db956c16 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
" Plugins for review:
"   'msanders/snipmate.vim'
"   'godlygeek/tabular'
"   'plasticboy/vim-markdown'
" Consider using sections like this:
"     Section Name {{{
"     set number "This will be folded
"     }}}

runtime bundle/vim-pathogen/autoload/pathogen.vim
execute pathogen#infect()
execute pathogen#helptags()
set nocompatible " Be iMproved
let mapleader="," " set leader early as otherwise it wouldn't work
filetype plugin indent on

" ========== general settings ==========
set encoding=utf-8
set ff=unix
set number
set clipboard=unnamedplus
set showmatch " show matching brackets

set incsearch " Find as you type search
set hlsearch " Highlight search terms
set ignorecase " Case-insensitive searching.
set smartcase " But case-sensitive if expression contains a capital letter.

set history=10000 " remember more commands and search history
set undolevels=10000 " use many levels of undo

set nobackup
set noswapfile

set tabstop=8
set shiftwidth=8
set textwidth=80
set cc=81
"set expandtab

syntax enable
set background=dark
colorscheme distinguished

set list
set listchars=tab:>-,trail:~

set lazyredraw
set wildmenu

set relativenumber

set wildignore+=*.a,*.o,*.class
set wildignore+=*.bmp,*.gif,*.ico,*.jpg,*.jpeg,*.png
set wildignore+=.DS_Store,.git,.hg,.svn
set wildignore+=*~,*.swp,*.tmp

" jk is escape
inoremap jk <esc>

augroup reload_vimrc " {
    autocmd!
    autocmd BufWritePost $MYVIMRC source $MYVIMRC
augroup END " }

" switch buffers with space!
nnoremap <space> :call SwitchBuffer()<CR>

function! SwitchBuffer()
    exe "ls"
    let c = nr2char(getchar())
    exe "b " . c
    redraw
endfunction

map <silent> <leader>1 :diffget LO<CR>:diffupdate<CR>
map <silent> <leader>2 :diffget BA<CR>:diffupdate<CR>
map <silent> <leader>3 :diffget RE<CR>:diffupdate<CR>

map Q @
map <S-m> :bprevious<CR>
map m :bnext<CR>

" map F5 to removing trailing whitespace
nnoremap <F5> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar><CR>

" save file with root permissions
cmap w!! w !sudo tee % >/dev/null

" turn off search highlight
nnoremap <leader><space> :nohlsearch<CR>

" ========== file specific settings ==========
" Markdown
autocmd BufRead,BufNew *.md set filetype=markdown

" java
au BufNewFile,BufRead *.java set tabstop=4 softtabstop=4 shiftwidth=4 smarttab autoindent cc=121

" PKGBUILD
autocmd BufRead,BufNew PKGBUILD set filetype=sh

" ========== plugin settings ==========
" airline
set laststatus=2
let g:airline_theme = 'powerlineish'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#fnamemod = ':t'
" only enable trailing whitespace checking
let g:airline#extensions#whitespace#checks = [ 'trailing' ]
let g:airline#extensions#wordcount#enabled = 0 " extremely slow on bigger files

" ALE
let g:ale_linters = {'text': ['proselint', 'vale']}
nmap <silent> <C-k> <Plug>(ale_previous_wrap)
nmap <silent> <C-j> <Plug>(ale_next_wrap)

" Start interactive EasyAlign in visual mode (e.g. vip<Enter>)
vmap <Enter> <Plug>(EasyAlign)

" Start interactive EasyAlign for a motion/text object (e.g. gaip)
nmap ga <Plug>(EasyAlign)

" toggle gundo
nnoremap <leader>u :GundoToggle<CR>

" ctrlp
let g:ctrlp_max_files = 1000000
let g:ctrlp_cmd = 'CtrlPMixed'

" supertab
let g:SuperTabDefaultCompletionType = "context"

" javacomplete2
autocmd FileType java setlocal omnifunc=javacomplete#Complete
nmap <F4> <Plug>(JavaComplete-Imports-AddSmart)
nmap <F6> <Plug>(JavaComplete-Imports-AddMissing)
nmap <F7> <Plug>(JavaComplete-Imports-RemoveUnused)

" Automatically import
nmap <leader>ai <Plug>(JavaComplete-Imports-AddMissing)

" markdown
let g:vim_markdown_math = 1

" html
let g:ale_linters = {
\   'html': ['htmlhint', 'tidy'],
\}

" hexmode
let g:hexmode_patterns = '*.bin,*.exe,*.dat,*.rom'