aboutsummaryrefslogtreecommitdiffstats
path: root/vim/vimrc
blob: e32c81f57f535f92aaf44031e82bb50f06b63100 (plain)
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
" Respect XDG
set viminfo+=n$XDG_CACHE_HOME/vim/viminfo
set directory=$XDG_CACHE_HOME/vim/swap,/tmp
set backupdir=$XDG_CACHE_HOME/vim/backup,/tmp
set undodir=$XDG_CACHE_HOME/vim/undo,/tmp
set runtimepath=$XDG_CONFIG_HOME/vim,$VIM,$VIMRUNTIME,/usr/share/vim/vimfiles,$XDG_CONFIG_HOME/vim/after

" NeoBundle stuff
set runtimepath+=$XDG_CONFIG_HOME/vim/bundle/neobundle.vim/
call neobundle#begin(expand('$XDG_CONFIG_HOME/vim/bundle'))
NeoBundleFetch 'Shougo/neobundle.vim'

NeoBundle 'Shougo/vimproc', {
 \ 'build' : {
 \     'unix' : 'make -f make_unix.mak',
 \     'mac'  : 'make -f make_mac.mak',
 \    },
 \ }
NeoBundle 'Shougo/unite.vim'
NeoBundle 'mattn/emmet-vim'
NeoBundle 'miekg/rfc'
NeoBundle 'tommcdo/vim-exchange'
NeoBundle 'ConradIrwin/vim-bracketed-paste'
NeoBundle 'scrooloose/syntastic'
NeoBundle 'kien/ctrlp.vim'

call neobundle#end()

" Colorscheme
colorscheme Darkcustomside

" Allow backspacing over everything in insert mode
set backspace=indent,eol,start

syntax on
filetype plugin indent on
set autoindent
set copyindent
set number            " always show line numbers
set ignorecase        " Ignore case of normal letters
set smartcase         " ignore case if search pattern is all lowercase,
                      "   case-sensitive otherwise
set hlsearch          " highlight search terms
set incsearch         " show search matches as you type
set history=1000
set undolevels=1000
set wildmenu          " Show tab completion options in a menu
set wildignore=*.swp,*.bak,*.pyc,*.o
set title             " change the terminal's title
set visualbell        " don't beep
set noerrorbells      " don't beep
set ruler
set backup            " use backup files
set undofile          " save undo's after file closes
set mouse=a           " enable mouse in all modes
set shortmess+=I      " don't show the nag-screen
set encoding=utf-8    " oh please, like this needs explanation
set showcmd           " Show partial command in the last line of the screen
set scrolloff=1       " Minimum number of screen lines under/above the cursor
set linebreak         " Don’t wrap lines in the middle of a word

" Use space as a leader
map <space> <Leader>
nmap <silent> <Leader>/ :nohlsearch<CR>

cmap w!! w !sudo tee % >/dev/null

" Tabs are 4 spaces wide
set tabstop=4
set shiftwidth=4
set softtabstop=4
set noexpandtab

" Automatically hide buffers instead of requiring bangcommands
set hidden

" Yank to clipboard/selection by default
set clipboard=unnamed,unnamedplus

" Easier window moving
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l

vmap <C-j> gj
vmap <C-k> gk
nmap <C-j> gj
nmap <C-k> gk

" Show tabs and end-of-line whitespace
set listchars=tab:»·,trail:·
set list

" Color spaces at end of lines bright red for visibility
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

highlight Comment cterm=italic


" Why does vim set the filetype of .h files as C++?
augroup filetypes
	autocmd!
	autocmd BufRead,BufNewFile *.h set filetype=c
augroup END

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 noet

" Use clang_check for syntax checking
let g:syntastic_c_checkers = ['clang_check']

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

let g:ctrlp_extensions = ['tag', 'buffertag', 'dir', 'undo', 'line',
                         \ 'changes', 'mixed', 'bookmarkdir']

nmap <silent> <Leader>p :CtrlPMixed<CR>

" Installation check.
NeoBundleCheck


"" Statusline

set statusline=
set statusline+=[%n]  " Buffer number
set statusline+=%<\   " Where to truncate
set statusline+=%.99f " Relative path to file
set statusline+=\ %y  " Filetype flag, [c]; [help]
set statusline+=%w    " Preview window flag, [Preview]
set statusline+=%m    " Modified flag, [+]; [-]

" Show a warning if file is read only, [RO]
set statusline+=%#identifier#
set statusline+=%r
set statusline+=%*

" Show syntastic warnings
if neobundle#is_sourced('syntastic')
	set statusline+=%#warningmsg#
	set statusline+=%{SyntasticStatuslineFlag()}
	set statusline+=%*
endif

" Show a warning if file format isn’t unix
set statusline+=%#warningmsg#
set statusline+=%{&ff!='unix'?'['.&ff.']':''}
set statusline+=%*

" Show a warning if file encoding isn’t utf-8
set statusline+=%#warningmsg#
set statusline+=%{(&fenc!='utf-8'&&&fenc!='')?'['.&fenc.']':''}
set statusline+=%*


"" Right side of statusline
set statusline+=%=                   " Left/right separation point
set statusline+=%-15.((%l,%c-%v)\ %) " Line, column, percentage. (20,0)
set statusline+=%P                   " Percentage visible

set laststatus=2 " Always show statusline