Created
February 27, 2012 17:52
-
-
Save jonezy/1925845 to your computer and use it in GitHub Desktop.
My Windows _vimrc
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
| set nocompatible | |
| source $VIMRUNTIME/vimrc_example.vim | |
| source $VIMRUNTIME/mswin.vim | |
| behave mswin | |
| colorscheme zenburn | |
| " CD to c:\dev\ | |
| :cd c:\dev\ | |
| set diffexpr=MyDiff() | |
| function MyDiff() | |
| let opt = '-a --binary ' | |
| if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif | |
| if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif | |
| let arg1 = v:fname_in | |
| if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif | |
| let arg2 = v:fname_new | |
| if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif | |
| let arg3 = v:fname_out | |
| if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif | |
| let eq = '' | |
| if $VIMRUNTIME =~ ' ' | |
| if &sh =~ '\<cmd' | |
| let cmd = '""' . $VIMRUNTIME . '\diff"' | |
| let eq = '"' | |
| else | |
| let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' | |
| endif | |
| else | |
| let cmd = $VIMRUNTIME . '\diff' | |
| endif | |
| silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq | |
| endfunction | |
| "" | |
| "" Basic Setup | |
| "" | |
| set lines=150 columns=150 | |
| set nocompatible " Use vim, no vi defaults | |
| set number " Show line numbers | |
| set ruler " Show line and column number | |
| syntax enable " Turn on syntax highlighting allowing local overrides | |
| set encoding=utf-8 " Set default encoding to UTF-8 | |
| "" | |
| "" Whitespace | |
| "" | |
| set nowrap " don't wrap lines | |
| set tabstop=2 " a tab is two spaces | |
| set shiftwidth=2 " an autoindent (with <<) is two spaces | |
| set expandtab " use spaces, not tabs | |
| set list " Show invisible characters | |
| set backspace=indent,eol,start " backspace through everything in insert mode | |
| if exists("g:enable_mvim_shift_arrow") | |
| let macvim_hig_shift_movement = 1 " mvim shift-arrow-keys | |
| endif | |
| " List chars | |
| set listchars="" " Reset the listchars | |
| set listchars=tab:\ \ " a tab should display as " ", trailing whitespace as "." | |
| set listchars+=trail:. " show trailing spaces as dots | |
| set listchars+=extends:> " The character to show in the last column when wrap is | |
| " off and the line continues beyond the right of the screen | |
| set listchars+=precedes:< " The character to show in the last column when wrap is | |
| " off and the line continues beyond the right of the screen | |
| "" | |
| "" Searching | |
| "" | |
| set hlsearch " highlight matches | |
| set incsearch " incremental searching | |
| set ignorecase " searches are case insensitive... | |
| set smartcase " ... unless they contain at least one capital letter | |
| "" | |
| "" Wild settings | |
| "" | |
| " TODO: Investigate the precise meaning of these settings | |
| " set wildmode=list:longest,list:full | |
| " Disable output and VCS files | |
| set wildignore+=*.o,*.out,*.obj,.git,*.rbc,*.rbo,*.class,.svn,*.gem | |
| " Disable archive files | |
| set wildignore+=*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz | |
| " Ignore bundler and sass cache | |
| set wildignore+=*/vendor/gems/*,*/vendor/cache/*,*/.bundle/*,*/.sass-cache/* | |
| " Disable temp and backup files | |
| set wildignore+=*.swp,*~,._* | |
| " Toggle paste mode | |
| nmap <silent> <F4> :set invpaste<CR>:set paste?<CR> | |
| imap <silent> <F4> <ESC>:set invpaste<CR>:set paste?<CR> | |
| " format the entire file | |
| nmap <leader>fef ggVG= | |
| " Next buffer | |
| nmap <silent> ,. :bnext<CR> | |
| " Previous buffer | |
| nmap <silent> ,m :bprev<CR> | |
| " Next tab | |
| nmap <silent> ;' :tabnext<CR> | |
| nmap <silent> ;l :tabprev<CR> | |
| " upper/lower word | |
| nmap <leader>u mQviwU`Q | |
| nmap <leader>l mQviwu`Q | |
| " upper/lower first char of word | |
| nmap <leader>U mQgewvU`Q | |
| nmap <leader>L mQgewvu`Q | |
| " cd to the directory containing the file in the buffer | |
| nmap <silent> <leader>cd :lcd %:h<CR> | |
| " Create the directory containing the file in the buffer | |
| nmap <silent> <leader>md :!mkdir -p %:p:h<CR> | |
| " Some helpers to edit mode | |
| " http://vimcasts.org/e/14 | |
| cnoremap %% <C-R>=expand('%:h').'/'<cr> | |
| map <leader>ew :e %% | |
| map <leader>es :sp %% | |
| map <leader>ev :vsp %% | |
| map <leader>et :tabe %% | |
| " Swap two words | |
| nmap <silent> gw :s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR>`' | |
| " Underline the current line with '=' | |
| nmap <silent> <leader>ul :t.\|s/./=/g\|:nohls<cr> | |
| " set text wrapping toggles | |
| nmap <silent> <leader>tw :set invwrap<CR>:set wrap?<CR> | |
| " find merge conflict markers | |
| nmap <silent> <leader>fc <ESC>/\v^[<=>]{7}( .*\|$)<CR> | |
| " Map the arrow keys to be based on display lines, not physical lines | |
| map <Down> gj | |
| map <Up> gk | |
| " Toggle hlsearch with <leader>hs | |
| nmap <leader>hs :set hlsearch! hlsearch?<CR> | |
| " Adjust viewports to the same size | |
| map <Leader>= <C-w>= | |
| " map leader-n to open/close nerdtree | |
| nmap <leader>n :NERDTreeToggle<CR> | |
| if has("statusline") && !&cp | |
| set laststatus=2 " always show the status bar | |
| " 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 | |
| " Start the status line | |
| set statusline=%f\ %m\ %r | |
| " Finish the statusline | |
| set statusline+=Line:%l/%L[%p%%] | |
| set statusline+=Col:%v | |
| set statusline+=Buf:#%n | |
| set statusline+=[%b][0x%B] | |
| endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment