Created
January 12, 2012 12:32
-
-
Save airstrike/1600243 to your computer and use it in GitHub Desktop.
my vimrc file
This file contains hidden or 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
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" a lot of this was stolen from: http://amix.dk/vim/vimrc.html " | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => VIM user interface | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Set 7 lines to the curors - when moving vertical.. | |
set so=2 | |
set wildmenu "Turn on WiLd menu | |
set ruler "Always show current position | |
set cmdheight=2 "The commandbar height | |
set hid "Change buffer - without saving | |
" Set backspace config | |
set backspace=eol,start,indent | |
set whichwrap+=<,>,h,l | |
set ignorecase "Ignore case when searching | |
set smartcase | |
set hlsearch "Highlight search things | |
set incsearch "Make search act like search in modern browsers | |
set nolazyredraw "Don't redraw while executing macros | |
set magic "Set magic on, for regular expressions | |
set showmatch "Show matching bracets when text indicator is over them | |
set mat=2 "How many tenths of a second to blink | |
" No sound on errors | |
set noerrorbells | |
set novisualbell | |
set t_vb= | |
set tm=500 | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Colors and Fonts | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
syntax enable "Enable syntax hl | |
if has("gui_running") | |
set guioptions-=T | |
set t_Co=256 | |
set background=dark | |
colorscheme github | |
set nonu | |
else | |
colorscheme github | |
set background=dark | |
set nonu | |
endif | |
" visual, font, encoding | |
colorscheme github | |
set guifont=Ubuntu\ Mono:h9 | |
set encoding=utf8 | |
try | |
lang en_US | |
catch | |
endtry | |
set ffs=unix,dos,mac "Default file types | |
" hiding menubar, toolbar, etc | |
set guioptions-=m "remove menu bar | |
set guioptions-=T "remove toolbar | |
set guioptions-=r "remove right-hand scroll bar | |
set guioptions-=L "remove left-hand scroll bar | |
set guioptions= | |
" maximize window on startup | |
:set lines=999 columns=999 | |
au VIMEnter * simalt ~x "Maximize gvim on startup | |
" au GUIEnter * simalt ~x "Maximize gvim on startup | |
nnoremap <C-F1> :if &go=~#'m'<Bar>set go-=m<Bar>else<Bar>set go+=m<Bar>endif<CR> | |
nnoremap <C-F2> :if &go=~#'T'<Bar>set go-=T<Bar>else<Bar>set go+=T<Bar>endif<CR> | |
nnoremap <C-F3> :if &go=~#'r'<Bar>set go-=r<Bar>else<Bar>set go+=r<Bar>endif<CR> | |
" tab, spacing, wrapping | |
set expandtab | |
set shiftwidth=4 | |
set tabstop=4 | |
set smarttab | |
set ai | |
set si | |
set wrap | |
set autoread | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => General | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Sets how many lines of history VIM has to remember | |
set history=700 | |
" Enable filetype plugin | |
filetype plugin on | |
filetype indent on | |
" Set to auto read when a file is changed from the outside | |
set autoread | |
" With a map leader it's possible to do extra key combinations | |
" like <leader>w saves the current file | |
let mapleader = "," | |
let g:mapleader = "," | |
" Fast saving | |
nnoremap <leader>w :w!<cr> | |
" Fast editing of the .vimrc | |
nnoremap <leader>e :e! C:/vim/vim73/vimrc.vim<cr> | |
" Fast session saving + exiting | |
function! RestoreSession() | |
if argc() == 0 "vim called without arguments | |
echo '$VIMRUNTIME' | |
try | |
execute 'source C:\vim\vim73\session.vim' | |
catch | |
endtry | |
try | |
execute ':e' | |
catch | |
endtry | |
end | |
endfunction | |
autocmd VimEnter * call RestoreSession() | |
nnoremap <leader>s :mksession! $VIMRUNTIME/session.vim<CR> | |
" When vimrc is edited, reload it | |
" Because we have a maximizing/restore call on GUIEnter, calling | |
" source will restore the window, then we need to call | |
" simalt ~ *x again to re-maximize it. | |
autocmd! bufwritepost vimrc.vim source C:\vim\vim73\vimrc.vim | simalt ~ *x | |
autocmd! bufwritepost vimrc source ~/.vim_runtime/vimrc | |
" autocmd! bufwritepost vimrc simalt ~ *x | |
" autocmd! bufwritepost vimrc.vim simalt ~ *x | |
" taglist | |
let Tlist_Auto_Open = 0 | |
let Tlist_Compact_Format = 1 | |
let Tlist_Exit_OnlyWindow = 1 | |
let Tlist_Sort_Type = "order" | |
let Tlist_Use_Right_Window = 1 | |
" Command abbreviations | |
" http://stackoverflow.com/questions/3878692/aliasing-a-command-in-vim/10708687#10708687 | |
" cabs - less stupidity {{{ | |
fu! Single_quote(str) | |
return "'" . substitute(copy(a:str), "'", "''", 'g') . "'" | |
endfu | |
fu! Cabbrev(key, value) | |
exe printf('cabbrev <expr> %s (getcmdtype() == ":" && getcmdpos() <= %d) ? %s : %s', | |
\ a:key, 1+len(a:key), Single_quote(a:value), Single_quote(a:key)) | |
endfu | |
"}}} | |
call Cabbrev('we', 'sav') | |
call Cabbrev('/', '/\v') | |
call Cabbrev('?', '?\v') | |
call Cabbrev('s/', 's/\v') | |
call Cabbrev('%s/', '%s/\v') | |
call Cabbrev('s#', 's#\v') | |
call Cabbrev('%s#', '%s#\v') | |
call Cabbrev('s@', 's@\v') | |
call Cabbrev('%s@', '%s@\v') | |
call Cabbrev('s!', 's!\v') | |
call Cabbrev('%s!', '%s!\v') | |
call Cabbrev('s%', 's%\v') | |
call Cabbrev('%s%', '%s%\v') | |
call Cabbrev("'<,'>s/", "'<,'>s/\v") | |
call Cabbrev("'<,'>s#", "'<,'>s#\v") | |
call Cabbrev("'<,'>s@", "'<,'>s@\v") | |
call Cabbrev("'<,'>s!", "'<,'>s!\v") | |
" key mappings | |
nnoremap <silent> <F8> :TlistToggle<CR> | |
nnoremap <silent> <ESC> :noh<CR><ESC> | |
" Alt-a and Alt-x increase and decrease numbers | |
nnoremap <A-a> <C-a> | |
nnoremap <A-x> <C-x> | |
" smarter moving around | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
"""""""""""""""""""""""""""""" | |
" => Statusline | |
"""""""""""""""""""""""""""""" | |
" Always hide the statusline | |
set laststatus=2 | |
" Format the statusline | |
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c | |
function! CurDir() | |
let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g") | |
return curdir | |
endfunction | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
else | |
return '' | |
endif | |
endfunction | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Parenthesis/bracket expanding | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
vnoremap $1 <esc>`>a)<esc>`<i(<esc> | |
vnoremap $2 <esc>`>a]<esc>`<i[<esc> | |
vnoremap $3 <esc>`>a}<esc>`<i{<esc> | |
vnoremap $$ <esc>`>a"<esc>`<i"<esc> | |
vnoremap $q <esc>`>a'<esc>`<i'<esc> | |
vnoremap $e <esc>`>a"<esc>`<i"<esc> | |
" Map auto complete of (, ", ', [ | |
inoremap $1 ()<esc>i | |
inoremap $2 []<esc>i | |
inoremap $3 {}<esc>i | |
inoremap $4 {<esc>o}<esc>O | |
inoremap $q ''<esc>i | |
inoremap $e ""<esc>i | |
inoremap $t <><esc>i | |
"""""""""""""""""""""""""""""" | |
" => Python section | |
"""""""""""""""""""""""""""""" | |
let python_highlight_all = 1 | |
au FileType python syn keyword pythonDecorator True None False self | |
au BufNewFile,BufRead *.jinja set syntax=htmljinja | |
au BufNewFile,BufRead *.mako set ft=mako | |
au FileType python inoremap <buffer> $r return | |
au FileType python inoremap <buffer> $i import | |
au FileType python inoremap <buffer> $p print | |
au FileType python inoremap <buffer> $f #--- PH ----------------------------------------------<esc>FP2xi | |
au FileType python map <buffer> <leader>1 /class | |
au FileType python map <buffer> <leader>2 /def | |
au FileType python map <buffer> <leader>C ?class | |
au FileType python map <buffer> <leader>D ?def | |
"""""""""""""""""""""""""""""" | |
" => JavaScript section | |
""""""""""""""""""""""""""""""" | |
au FileType javascript call JavaScriptFold() | |
au FileType javascript setl fen | |
au FileType javascript setl nocindent | |
au FileType javascript imap <c-t> AJS.log();<esc>hi | |
au FileType javascript imap <c-a> alert();<esc>hi | |
au FileType javascript inoremap <buffer> $r return | |
au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xi | |
function! JavaScriptFold() | |
setl foldmethod=syntax | |
setl foldlevelstart=1 | |
syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend | |
function! FoldText() | |
return substitute(getline(v:foldstart), '{.*', '{...}', '') | |
endfunction | |
setl foldtext=FoldText() | |
endfunction | |
" Switch window mappings | |
noremap <silent> <A-Up> :wincmd k<CR> | |
noremap <silent> <A-Down> :wincmd j<CR> | |
noremap <silent> <A-Left> :wincmd h<CR> | |
noremap <silent> <A-Right> :wincmd l<CR> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => MISC | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Remove the Windows ^M - when the encodings gets messed up | |
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm | |
" ------------------------------------------------------------------------------------------------------------ | |
"{{{Auto Commands | |
" Automatically cd into the directory that the file is in | |
autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ') | |
" Remove any trailing whitespace that is in the file | |
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif | |
" Restore cursor position to where it was before | |
augroup JumpCursorOnEdit | |
au! | |
autocmd BufReadPost * | |
\ if expand("<afile>:p:h") !=? $TEMP | | |
\ if line("'\"") > 1 && line("'\"") <= line("$") | | |
\ let JumpCursorOnEdit_foo = line("'\"") | | |
\ let b:doopenfold = 1 | | |
\ if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) | | |
\ let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 | | |
\ let b:doopenfold = 2 | | |
\ endif | | |
\ exe JumpCursorOnEdit_foo | | |
\ endif | | |
\ endif | |
" Need to postpone using "zv" until after reading the modelines. | |
autocmd BufWinEnter * | |
\ if exists("b:doopenfold") | | |
\ exe "normal zv" | | |
\ if(b:doopenfold > 1) | | |
\ exe "+".1 | | |
\ endif | | |
\ unlet b:doopenfold | | |
\ endif | |
augroup END | |
"}}} | |
"{{{Misc Settings | |
" Necesary for lots of cool vim things | |
set nocompatible | |
" This shows what you are typing as a command. I love this! | |
set showcmd | |
" Folding Stuffs | |
set foldmethod=marker | |
" Needed for Syntax Highlighting and stuff | |
filetype on | |
filetype plugin on | |
syntax enable | |
set grepprg=grep\ -nH\ $* | |
" Who doesn't like autoindent? | |
" set autoindent | |
" Spaces are better than a tab character | |
" set expandtab | |
" set smarttab | |
" Who wants an 8 character tab? Not me! | |
" set shiftwidth=4 | |
" set softtabstop=4 | |
" Use english for spellchecking, but don't spellcheck by default | |
if version >= 700 | |
set spl=en spell | |
set nospell | |
endif | |
" Cool tab completion stuff | |
set wildmenu | |
set wildmode=list:longest,full | |
" Enable mouse support in console | |
set mouse=a | |
" Got backspace? | |
set backspace=2 | |
" Line Numbers PWN! | |
set number | |
" Ignoring case is a fun trick | |
set ignorecase | |
" And so is Artificial Intellegence! | |
set smartcase | |
" This is totally awesome - remap jj to escape in insert mode. You'll never type jj anyway, so it's great! | |
inoremap jj <Esc> | |
nnoremap JJJJ <Nop> | |
" Incremental searching is sexy | |
set incsearch | |
" Highlight things that we find with the search | |
set hlsearch | |
" Since I use linux, I want this | |
" let g:clipbrdDefaultReg = '+' | |
" When I close a tab, remove the buffer | |
set nohidden | |
" Set off the other paren | |
highlight MatchParen ctermbg=4 | |
" }}} | |
"Status line gnarliness | |
"set laststatus=2 | |
"set statusline=%F%m%r%h%w\ (%{&ff}){%Y}\ [%l,%v][%p%%] | |
" }}} | |
"{{{ Functions | |
"{{{ Open URL in browser | |
function! Browser () | |
let line = getline (".") | |
let line = matchstr (line, "http[^ ]*") | |
exec "!C:\Documents and Settings\f8040420\Local Settings\Application Data\Mozilla Firefox\firefox.exe ".line | |
endfunction | |
"}}} | |
"{{{Theme Rotating | |
let themeindex=0 | |
function! RotateColorTheme() | |
let y = -1 | |
while y == -1 | |
let colorstring = "inkpot#ron#blue#elflord#evening#koehler#murphy#pablo#desert#torte#" | |
let x = match( colorstring, "#", g:themeindex ) | |
let y = match( colorstring, "#", x + 1 ) | |
let g:themeindex = x + 1 | |
if y == -1 | |
let g:themeindex = 0 | |
else | |
let themestring = strpart(colorstring, x + 1, y - x - 1) | |
return ":colorscheme ".themestring | |
endif | |
endwhile | |
endfunction | |
" }}} | |
"{{{ Paste Toggle | |
let paste_mode = 0 " 0 = normal, 1 = paste | |
func! Paste_on_off() | |
if g:paste_mode == 0 | |
set paste | |
let g:paste_mode = 1 | |
else | |
set nopaste | |
let g:paste_mode = 0 | |
endif | |
return | |
endfunc | |
"}}} | |
"{{{ Mappings | |
" Open Url on this line with the browser \w | |
map <Leader>w :call Browser ()<CR> | |
" Open the Project Plugin <F5> | |
nnoremap <silent> <F5> :Project<CR> | |
" Open the Project Plugin | |
nnoremap <silent> <Leader>pal :Project .vimproject<CR> | |
" TODO Mode | |
nnoremap <silent> <Leader>todo :execute TodoListMode()<CR> | |
" Open the TagList Plugin <F3> | |
" Next Tab | |
" nnoremap <silent> <C-Right> :tabnext<CR> | |
" Previous Tab | |
" nnoremap <silent> <C-Left> :tabprevious<CR> | |
" New Tab | |
nnoremap <silent> <C-t> :tabnew<CR> | |
" Restore the usual C-t behavior as different keys | |
" Help browsing | |
nnoremap <silent> <c-bs> <CR> | |
nnoremap <silent> <c-cr> <CR> | |
" Rotate Color Scheme <F12> | |
nnoremap <silent> <F12> :execute RotateColorTheme()<CR> | |
" DOS is for fools. | |
" nnoremap <silent> <F9> :%s/$//g<CR>:%s// /g<CR> | |
" Paste Mode! Dang! <F10> | |
nnoremap <silent> <F10> :call Paste_on_off()<CR> | |
set pastetoggle=<F10> | |
" Edit vimrc \ev | |
nnoremap <silent> <Leader>ev :tabnew<CR>:e ~/.vimrc<CR> | |
" Edit gvimrc \gv | |
nnoremap <silent> <Leader>gv :tabnew<CR>:e ~/.gvimrc<CR> | |
" Up and down are more logical with g.. | |
nnoremap <silent> k gk | |
nnoremap <silent> j gj | |
inoremap <silent> <Up> <Esc>gka | |
inoremap <silent> <Down> <Esc>gja | |
" Create Blank Newlines and stay in Normal mode | |
nnoremap <silent> zj o<Esc> | |
nnoremap <silent> zk O<Esc> | |
" Space will toggle folds! | |
nnoremap <space> za | |
" Search mappings: These will make it so that going to the next one in a | |
" search will center on the line it's found in. | |
map N Nzz | |
map n nzz | |
" Testing | |
set completeopt=longest,menuone,preview | |
inoremap <expr> <cr> pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>" | |
inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>" | |
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>" | |
" Swap ; and : Convenient. | |
nnoremap ; : | |
nnoremap : ; | |
" Fix email paragraphs | |
nnoremap <leader>par :%s/^>$//<CR> | |
let g:rct_completion_use_fri = 1 | |
let g:Tex_DefaultTargetFormat = "pdf" | |
" filetype plugin indent on | |
" syntax on | |
" Map color switcher | |
map <F6> :call NextColor(1) <cr> | |
map <F7> :call NextColor() <cr> | |
" {{{ netwr -- filebrowsing | |
let g:netrw_bufsettings = 'noma nomod nu nobl nowrap ro' | |
let g:netrw_list_hide= '.*\.swp$,.*\.pyc$,.*\.old,.*.backup' | |
" }}} | |
" removing selectmode | |
set selectmode= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment