Created
August 31, 2011 16:52
-
-
Save mstroeck/1184042 to your computer and use it in GitHub Desktop.
.vimrc Settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set nocompatible | |
set number | |
set ruler | |
syntax on | |
" Set encoding | |
set encoding=utf-8 | |
" Whitespace stuff | |
set nowrap | |
set tabstop=4 | |
set shiftwidth=2 | |
set softtabstop=2 | |
set expandtab | |
set list listchars=tab:\ \ ,trail:· | |
" Searching | |
set hlsearch | |
set incsearch | |
set ignorecase | |
set smartcase | |
" Tab completion | |
set wildmode=list:longest,list:full | |
set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/* | |
" Status bar | |
set laststatus=2 | |
" Without setting this, ZoomWin restores windows in a way that causes | |
" equalalways behavior to be triggered the next time CommandT is used. | |
" This is likely a bludgeon to solve some other issue, but it works | |
set noequalalways | |
" OmniComplete | |
autocmd FileType python set omnifunc=pythoncomplete#Complete | |
inoremap <C-space> <C-x><C-o> | |
" Run Python files in ipython | |
autocmd FileType python map F5 :w<CR>:!screen -x ipython -X stuff $'\%run %:p:h\n'<CR><CR> | |
" NERDTree configuration | |
let NERDTreeIgnore=['\.pyc$', '\.rbc$', '\~$'] | |
map <Leader>n :NERDTreeToggle<CR> | |
let NERDTreeShowHidden=1 | |
nnoremap <F3> :NERDTreeToggle<CR> | |
" Command-T configuration | |
let g:CommandTMaxHeight=20 | |
" ZoomWin configuration | |
map <Leader><Leader> :ZoomWin<CR> | |
" CTags | |
map <Leader>rt :!ctags --extra=+f -R *<CR><CR> | |
map <C-\> :tnext<CR> | |
nnoremap <F8> :!/usr/local/bin/ctags -R --python-kinds=-i *.py<CR> | |
" Remember last location in file | |
if has("autocmd") | |
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | |
\| exe "normal g'\"" | endif | |
endif | |
function s:setupWrapping() | |
set wrap | |
set wrapmargin=2 | |
set textwidth=72 | |
endfunction | |
function s:setupMarkup() | |
call s:setupWrapping() | |
map <buffer> <Leader>p :Hammer<CR> | |
endfunction | |
" make uses real tabs | |
au FileType make set noexpandtab | |
" Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby | |
au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru} set ft=ruby | |
" md, markdown, and mk are markdown and define buffer-local preview | |
au BufRead,BufNewFile *.{md,markdown,mdown,mkd,mkdn} call s:setupMarkup() | |
" add json syntax highlighting | |
au BufNewFile,BufRead *.json set ft=javascript | |
au BufRead,BufNewFile *.txt call s:setupWrapping() | |
" make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ ) | |
au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79 | |
" allow backspacing over everything in insert mode | |
set backspace=indent,eol,start | |
" load the plugin and indent settings for the detected filetype | |
filetype plugin indent on | |
" Opens an edit command with the path of the currently edited file filled in | |
" Normal mode: <Leader>e | |
map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR> | |
" Opens a tab edit command with the path of the currently edited file filled in | |
" Normal mode: <Leader>t | |
map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR> | |
" Inserts the path of the currently edited file into a command | |
" Command mode: Ctrl+P | |
cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR> | |
" Unimpaired configuration | |
" Bubble single lines | |
nmap <C-Up> [e | |
nmap <C-Down> ]e | |
" Bubble multiple lines | |
vmap <C-Up> [egv | |
vmap <C-Down> ]egv | |
" Enable syntastic syntax checking | |
let g:syntastic_enable_signs=1 | |
let g:syntastic_quiet_warnings=1 | |
" gist-vim defaults | |
if has("mac") | |
let g:gist_clip_command = 'pbcopy' | |
elseif has("unix") | |
let g:gist_clip_command = 'xclip -selection clipboard' | |
endif | |
let g:gist_detect_filetype = 1 | |
let g:gist_open_browser_after_post = 1 | |
" Use modeline overrides | |
set modeline | |
set modelines=10 | |
" Default color scheme | |
colorscheme lucius | |
set background=dark | |
" Font setup | |
set gfn=Monaco:h15 | |
" Directories for swp files | |
set backupdir=~/.vim/backup | |
set directory=~/.vim/backup | |
" Turn off jslint errors by default | |
let g:JSLintHighlightErrorLine = 0 | |
" MacVIM shift+arrow-keys behavior (required in .vimrc) | |
let macvim_hig_shift_movement = 1 | |
" % to bounce from do to end etc. | |
runtime! macros/matchit.vim | |
" Show (partial) command in the status line | |
set showcmd | |
" Include user's local vim config | |
if filereadable(expand("~/.vimrc.local")) | |
source ~/.vimrc.local | |
endif | |
" Define the current compiler | |
if exists("compiler") | |
finish | |
endif | |
let compiler = "python" | |
" Set python as the make program and | |
setlocal makeprg=python | |
setlocal errorformat=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m | |
" When writing Python file check the syntax | |
au! BufWriteCmd *.py call CheckPythonSyntax() | |
function CheckPythonSyntax() | |
" Write the current buffer to a temporary file, check the syntax and | |
" if no syntax errors are found, write the file | |
let curfile = bufname("%") | |
let tmpfile = tempname() | |
silent execute "write! ".tmpfile | |
let output = system("python -c \"__import__('py_compile').compile(r'".tmpfile."')\" 2>&1") | |
if output != '' | |
" Make sure the output specifies the correct filename | |
let output = substitute(output, fnameescape(tmpfile), fnameescape(curfile), "g") | |
echo output | |
else | |
write | |
endif | |
" Delete the temporary file when done | |
call delete(tmpfile) | |
endfunction | |
function! TabMessage(cmd) | |
redir => message | |
silent execute a:cmd | |
redir END | |
tabnew | |
silent put=message | |
set nomodified | |
endfunction | |
command! -nargs=+ -complete=command TabMessage call TabMessage(<q-args>) | |
autocmd BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\" | |
autocmd BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m | |
autocmd BufRead *.py nmap <F5> (:TabMessage !python %<CR>) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment