rtyler / slide-vim

Set of modified dotvimrc and dotvim files used internally in Slide, Inc.

slide-vim / dotvimrc
100644 222 lines (175 sloc) 7.021 kb
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
" Original Author: John Anderson (sontek@gmail.com)
" Minor modifications by: R. Tyler Ballance (tyler@slide.com)
 
" Don't load plugins if we aren't in Vim7
if version < 700
set noloadplugins
endif
 
"" Skip this file unless we have +eval
if 1
 
""" Settings
set nocompatible " Don't be compatible with vi
 
"""" Movement
" work more logically with wrapped lines
noremap j gj
noremap k gk
 
"""" Searching and Patterns
set ignorecase " search is case insensitive
set smartcase " search case sensitive if caps on
set incsearch " show best match so far
set hlsearch " Highlight matches to the search
 
"""" Display
set background=dark " I use dark background
set lazyredraw " Don't repaint when scripts are running
set scrolloff=3 " Keep 3 lines below and above the cursor
set ruler " line numbers and column the cursor is on
set number " Show line numbering
set numberwidth=1 " Use 1 col + 1 space for numbers
colorscheme tango " Use tango colors
 
" tab labels show the filename without path(tail)
set guitablabel=%N/\ %t\ %M
 
""" Windows
if exists(":tab") " Try to move to other windows if changing buf
set switchbuf=useopen,usetab
else " Try other windows & tabs if available
set switchbuf=useopen
endif
 
"""" Messages, Info, Status
set shortmess+=a " Use [+] [RO] [w] for modified, read-only, modified
set showcmd " Display what command is waiting for an operator
set ruler " Show pos below the win if there's no status line
set laststatus=2 " Always show statusline, even if only 1 window
set report=0 " Notify me whenever any lines have changed
set confirm " Y-N-C prompt if closing with unsaved changes
set vb t_vb= " Disable visual bell! I hate that flashing.
 
"""" Editing
set backspace=2 " Backspace over anything! (Super backspace!)
set showmatch " Briefly jump to the previous matching paren
set matchtime=2 " For .2 seconds
set formatoptions-=tc " I can format for myself, thank you very much
set tabstop=4 " Tab stop of 4
set shiftwidth=4 " sw 4 spaces (used on auto indent)
set softtabstop=4 " 4 spaces as a tab for bs/del
set autoindent
 
" we don't want to edit these type of files
set wildignore=*.o,*.obj,*.bak,*.exe,*.pyc,*.swp
 
"""" Coding
set history=100 " 100 Lines of history
set showfulltag " Show more information while completing tags
filetype plugin on " Enable filetype plugins
"filetype plugin indent on " Let filetype plugins indent for me
syntax on " Turn on syntax highlighting
 
" set up tags
set tags=tags;/
set tags+=$HOME/.vim/tags/python.ctags
 
""""" Folding
set foldmethod=syntax " By default, use syntax to determine folds
set foldlevelstart=99 " All folds open by default
 
"""" Command Line
set wildmenu " Autocomplete features in the status bar
 
"""" Autocommands
if has("autocmd")
augroup vimrcEx
au!
" In plain-text files and svn commit buffers, wrap automatically at 78 chars
au FileType text,svn setlocal tw=78 fo+=t
 
" In all files, try to jump back to the last spot cursor was in before exiting
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
 
" Use :make to check a script with perl
au FileType perl set makeprg=perl\ -c\ %\ $* errorformat=%f:%l:%m
 
" Use :make to compile c, even without a makefile
au FileType c,cpp if glob('Makefile') == "" | let &mp="gcc -o %< %" | endif
 
" Switch to the directory of the current file, unless it's a help file.
"au BufEnter * if &ft != 'help' | silent! cd %:p:h | endif
 
" Insert Vim-version as X-Editor in mail headers
au FileType mail sil 1 | call search("^$")
\ | sil put! ='X-Editor: Vim-' . Version()
 
" smart indenting for python
au FileType python set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
 
" allows us to run :make and get syntax errors for our python scripts
au FileType python set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
" setup file type for code snippets
au FileType python if &ft !~ 'django' | setlocal filetype=python.django_tempate.django_model | endif
"au FileType python set expandtab
 
" kill calltip window if we move cursor or leave insert mode
au CursorMovedI * if pumvisible() == 0|pclose|endif
au InsertLeave * if pumvisible() == 0|pclose|endif
 
augroup END
endif
 
"""" Key Mappings
" bind ctrl+space for omnicompletion
inoremap <Nul> <C-x><C-o>
 
" Toggle the tag list bar
nmap <a-down> :TlistAddFiles %:p<CR>:TlistUpdate<CR>
nmap <F4> :TlistToggle<CR>
 
" tab navigation (next tab) with alt left / alt right
nnoremap <a-right> gt
nnoremap <a-left> gT
 
" Ctrl + Arrows - Move around quickly
nnoremap <c-up> {
nnoremap <c-down> }
nnoremap <c-right> El
nnoremap <c-down> Bh
 
" Shift + Arrows - Visually Select text
nnoremap <s-up> Vk
nnoremap <s-down> Vj
nnoremap <s-right> vl
nnoremap <s-left> vh
 
if &diff
" easily handle diffing
   vnoremap < :diffget<CR>
   vnoremap > :diffput<CR>
else
" visual shifting (builtin-repeat)
   vnoremap < <gv
   vnoremap > >gv
endif
 
" Extra functionality for some existing commands:
" <C-6> switches back to the alternate file and the correct column in the line.
nnoremap <C-6> <C-6>`"
 
" CTRL-g shows filename and buffer number, too.
nnoremap <C-g> 2<C-g>
 
" Arg! I hate hitting q: instead of :q
nnoremap q: q:iq<esc>
 
" <C-l> redraws the screen and removes any search highlighting.
nnoremap <silent> <C-l> :nohl<CR><C-l>
 
" Q formats paragraphs, instead of entering ex mode
noremap Q gq
 
" * and # search for next/previous of selected text when used in visual mode
vnoremap * y/<C-R>"<CR>
vnoremap # y?<C-R>"<CR>
 
" <space> toggles folds opened and closed
nnoremap <space> za
 
" <space> in visual mode creates a fold over the marked range
vnoremap <space> zf
 
" allow arrow keys when code completion window is up
inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
 
""" Abbreviations
function! EatChar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
 
iabbr _t <C-R>=strftime("%H:%M:%S")<CR><C-R>=EatChar('\s')<CR>
iabbr _d <C-R>=strftime("%a, %d %b %Y")<CR><C-R>=EatChar('\s')<CR>
iabbr _dt <C-R>=strftime("%a, %d %b %Y %H:%M:%S %z")<CR><C-R>=EatChar('\s')<CR>
endif
 
let Tlist_Ctags_Cmd="ctags"
let Tlist_Compact_Format=1
let Tlist_Show_Menu=1
let Tlist_Auto_Highlight_Tag=1
let Tlist_Auto_Open=1
let Tlist_Auto_Update=1
let Tlist_Highlight_Tag_On_BufEnter=1
let Tlist_Process_File_Always=1
let Tlist_Show_One_File=1
 
inoremap <expr> <C-Space> pumvisible() \|\| &omnifunc == '' ?
\ "\<lt>C-n>" :
\ "\<lt>C-x>\<lt>C-o><c-r>=pumvisible() ?" .
\ "\"\\<lt>c-n>\\<lt>c-p>\\<lt>c-n>\" :" .
\ "\" \\<lt>bs>\\<lt>C-n>\"\<CR>"
imap <C-@> <C-Space>
 
set list
set lcs=tab:.\ ,eol:.,nbsp:%
 
au WinEnter,VimEnter * highlight rightMargin term=bold ctermfg=magenta guifg=magenta|match rightMargin /\%>100v./