]> git.r.bdr.sh - rbdr/dotfiles/blob - vimrc
Updates git submodules
[rbdr/dotfiles] / vimrc
1 set nocompatible
2
3 set number
4 set ruler
5 syntax on
6
7 " Set encoding
8 set encoding=utf-8
9
10 " Whitespace stuff
11 set nowrap
12 set tabstop=2
13 set shiftwidth=2
14 set softtabstop=2
15 set expandtab
16 set list listchars=tab:\ \ ,trail:ยท
17
18 " Searching
19 set hlsearch
20 set incsearch
21 set ignorecase
22 set smartcase
23
24 " Tab completion
25 set wildmode=list:longest,list:full
26 set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*
27
28 " Status bar
29 set laststatus=2
30
31 " Without setting this, ZoomWin restores windows in a way that causes
32 " equalalways behavior to be triggered the next time CommandT is used.
33 " This is likely a bludgeon to solve some other issue, but it works
34 set noequalalways
35
36 " NERDTree configuration
37 let NERDTreeIgnore=['\.pyc$', '\.rbc$', '\~$']
38 map <Leader>n :NERDTreeToggle<CR>
39
40 " CTags
41 map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
42 map <C-\> :tnext<CR>
43
44 " Remember last location in file
45 if has("autocmd")
46 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
47 \| exe "normal g'\"" | endif
48 endif
49
50 function s:setupWrapping()
51 set wrap
52 set wrapmargin=2
53 set textwidth=72
54 endfunction
55
56 function s:setupMarkup()
57 call s:setupWrapping()
58 map <buffer> <Leader>p :Hammer<CR>
59 endfunction
60
61 " make uses real tabs
62 au FileType make set noexpandtab
63
64 " Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby
65 au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru} set ft=ruby
66
67 " md, markdown, and mk are markdown and define buffer-local preview
68 au BufRead,BufNewFile *.{md,markdown,mdown,mkd,mkdn} call s:setupMarkup()
69
70 " add json syntax highlighting
71 au BufNewFile,BufRead *.json set ft=javascript
72
73 au BufRead,BufNewFile *.txt call s:setupWrapping()
74
75 " make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ )
76 au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79
77
78 " allow backspacing over everything in insert mode
79 set backspace=indent,eol,start
80
81 " load the plugin and indent settings for the detected filetype
82 filetype plugin indent on
83 filetype plugin on
84
85 " Opens an edit command with the path of the currently edited file filled in
86 " Normal mode: <Leader>e
87 map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
88
89 " Opens a tab edit command with the path of the currently edited file filled in
90 " Normal mode: <Leader>t
91 map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
92
93 " Inserts the path of the currently edited file into a command
94 " Command mode: Ctrl+P
95 cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR>
96
97 " Unimpaired configuration
98 " Bubble single lines
99 nmap <C-Up> [e
100 nmap <C-Down> ]e
101 " Bubble multiple lines
102 vmap <C-Up> [egv
103 vmap <C-Down> ]egv
104
105 " Enable syntastic syntax checking
106 let g:syntastic_enable_signs=1
107 let g:syntastic_quiet_warnings=1
108
109 " gist-vim defaults
110 if has("mac")
111 let g:gist_clip_command = 'pbcopy'
112 elseif has("unix")
113 let g:gist_clip_command = 'xclip -selection clipboard'
114 endif
115 let g:gist_detect_filetype = 1
116 let g:gist_open_browser_after_post = 1
117
118 " Use modeline overrides
119 set modeline
120 set modelines=10
121
122 " Default color scheme
123 set t_Co=256
124 color molokai
125
126 " Directories for swp files
127 set backupdir=~/.vim/.backup
128 set directory=~/.vim/.backup
129
130 " Turn off jslint errors by default
131 let g:JSLintHighlightErrorLine = 0
132
133 " MacVIM shift+arrow-keys behavior (required in .vimrc)
134 let macvim_hig_shift_movement = 1
135
136 " % to bounce from do to end etc.
137 runtime! macros/matchit.vim
138
139 " Show (partial) command in the status line
140 set showcmd
141
142 " Include user's local vim config
143 if filereadable(expand("~/.vimrc.local"))
144 source ~/.vimrc.local
145 endif
146
147 " Mapping for TagBar
148 nmap <F8> :TagbarToggle<CR>
149 let g:tagbar_ctags_bin="/usr/local/bin/ctags"
150
151 " Color Column
152 set colorcolumn=81
153
154 " Add Pathogen
155 call pathogen#infect()
156
157 " Folding Settings
158 set foldmethod=syntax
159 set foldnestmax=10
160 set nofoldenable
161 set foldlevel=1
162
163 " powerline stuff
164 python from powerline.vim import setup as powerline_setup
165 python powerline_setup()
166 python del powerline_setup
167
168 " Fix CtrlP root folder and add some ignores
169 let g:ctrlp_working_path_mode = 0
170 let g:ctrlp_custom_ignore = '\v[\/](\.(git|hg|svn)|node_modules|DS_Store)$'
171 let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']
172
173 " Relative numbers
174 autocmd FocusLost * :set number
175 autocmd InsertEnter * :set number
176 autocmd InsertLeave * :set relativenumber
177 autocmd CursorMoved * :set relativenumber
178
179 function! NumberToggle()
180 if(&relativenumber == 1)
181 set number
182 else
183 set relativenumber
184 endif
185 endfunction
186
187 nnoremap <C-n> :call NumberToggle()<cr>
188
189 " Find file and Find stuff to quickfix.
190 command -nargs=1 Qff :cexpr system('find . \| ag <f-args>') | copen
191
192 function! ToggleCWindow()
193 if exists("g:qwindow")
194 cclose
195 unlet g:qwindow
196 else
197 copen
198 let g:qwindow = 1
199 endif
200 endfunction
201 nnoremap <C-h> :call ToggleCWindow()<cr>