]> git.r.bdr.sh - rbdr/dotfiles/blob - vimrc
1cefa7773f1da34d64e881e6b54a42be845a363e
[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
84 " Opens an edit command with the path of the currently edited file filled in
85 " Normal mode: <Leader>e
86 map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
87
88 " Opens a tab edit command with the path of the currently edited file filled in
89 " Normal mode: <Leader>t
90 map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
91
92 " Inserts the path of the currently edited file into a command
93 " Command mode: Ctrl+P
94 cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR>
95
96 " Unimpaired configuration
97 " Bubble single lines
98 nmap <C-Up> [e
99 nmap <C-Down> ]e
100 " Bubble multiple lines
101 vmap <C-Up> [egv
102 vmap <C-Down> ]egv
103
104 " Enable syntastic syntax checking
105 let g:syntastic_enable_signs=1
106 let g:syntastic_quiet_warnings=1
107
108 " gist-vim defaults
109 if has("mac")
110 let g:gist_clip_command = 'pbcopy'
111 elseif has("unix")
112 let g:gist_clip_command = 'xclip -selection clipboard'
113 endif
114 let g:gist_detect_filetype = 1
115 let g:gist_open_browser_after_post = 1
116
117 " Use modeline overrides
118 set modeline
119 set modelines=10
120
121 " Default color scheme
122 set t_Co=256
123 color railscasts
124
125 " Directories for swp files
126 set backupdir=~/.vim/backup
127 set directory=~/.vim/backup
128
129 " Turn off jslint errors by default
130 let g:JSLintHighlightErrorLine = 0
131
132 " MacVIM shift+arrow-keys behavior (required in .vimrc)
133 let macvim_hig_shift_movement = 1
134
135 " % to bounce from do to end etc.
136 runtime! macros/matchit.vim
137
138 " Show (partial) command in the status line
139 set showcmd
140
141 " Include user's local vim config
142 if filereadable(expand("~/.vimrc.local"))
143 source ~/.vimrc.local
144 endif
145
146 " Mapping for TagBar
147 nmap <F8> :TagbarToggle<CR>
148
149 " Color Column
150 set colorcolumn=81
151
152 " Add Pathogen
153 call pathogen#infect()
154
155 " Folding Settings
156 set foldmethod=syntax
157 set foldnestmax=10
158 set nofoldenable
159 set foldlevel=1