1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-05-18 09:53:22 -07:00
rc/home/vimrc
2015-03-06 07:14:33 -08:00

201 lines
5.1 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" vim:cc=79,39
set nocompatible " screw vi
if has('multi_byte')
scriptencoding utf-8 " allow it in this script
set termencoding=utf-8 " and this terminal supports it
set encoding=utf-8 " and the default file is in it
endif
if (&term =~ "^xterm") " enable colors on any xterm
let &t_Co=256
let &t_AF="\e[38;5;%dm"
let &t_AB="\e[48;5;%dm"
endif
if has('syntax')
syntax enable " required for folding as well
set hlsearch " highlight search results
endif
if has('gui_running')
set guioptions-=m " hide menu
set guioptions-=T " hide toolbar
set guifont=Consolas:h9
set columns=84
set lines=36
cd $HOME " might not be ideal...
colorscheme candycode
else
colorscheme Tomorrow-Night
set colorcolumn=79
endif
set history=512 " command lines to remember
set ruler " write out the cursor position
set lazyredraw " when executing macros, untyped things
if has('title')|set title|endif " terminal title
" be less verbose with some terms and tell vim to shut up
set shortmess=atI
" lower the priority of tab-completing files with these extensions
set suffixes=.bak,~,.swp,.o,.log,.out
set noerrorbells visualbell t_vb= " disable bells
" TODO: check if dir exists
set backupdir=~/.vim/backup " put tilde files elsewhere
set scrolloff=3 " row context during scrolling
set sidescrolloff=2 " col context during scrolling
set number " lines
let c_syntax_for_h=1 " use C highlighting for .h files
set incsearch " show first search result as we type
set ignorecase " insensitive searching
set smartcase " except when uppercase is used
set infercase " use existing case when ins-completing
set foldmethod=marker
set foldlevelstart=99 " start with everything unfolded
if 0
set autoindent " when creating newline, use same indent
if has('smartindent')
set smartindent " automatic indents with a lot of stuff
endif
endif " it's really just annoying though
set diffopt+=iwhite " ignore whitespace in diff command
" word wrapping
set nowrap
set nolinebreak
set tabstop=8 shiftwidth=8 smarttab " 8 space tabs
fu! TabFour()
setlocal tabstop=8 expandtab shiftwidth=4 softtabstop=4
endf
fu! TabTwo()
setlocal tabstop=2 shiftwidth=2 expandtab
endf
if has('autocmd')
augroup tabs " 4 spaces as tabs for various languages
au!
au FileType bash,sh,zsh,mk,awk,python,pyrex,lua,vim call TabFour()
au BufRead,BufNewFile *.json call TabFour()
au BufRead,BufNewFile PKGBUILD call TabTwo()
au FileType ruby call TabTwo()
augroup END
augroup reload " http://superuser.com/a/417997
au!
au BufWritePost .vimrc,_vimrc,vimrc so $MYVIMRC
augroup END
fu! ResCur() " attempt to preserve cursor position
if line("'\"") > 1 && line("'\"") <= line("$")
normal! g`"
return 1
endif
endf
augroup resCur
au!
au BufWinEnter * call ResCur()
augroup END
endif
set backspace=eol,start,indent " make backspace useful
if has('wildmenu')
set wildmenu " tab completion in command-line
endif
" easy indent/unindent
nn <tab> >>
nn <s-tab> <<
" indentation without ending selection
vn <silent> <tab> >gv
vn <silent> <s-tab> <gv
" might make return useful
"nn <s-cr> J
"nn <c-cr> dd
" oh wait, terminals don't do that...
nn <F5> :w<cr>
nn <F8> :e<cr>
nn <F10> :q<cr>
nn <c-F5> :w!<cr>
nn <c-F8> :e!<cr>
nn <c-F10> :q!<cr>
nn <s-F5> :wall<cr>
"nn <s-F8> :eall<cr>
nn <s-F10> :qall<cr>
" bad habits
no <up> <nop>
no <down> <nop>
no <left> <nop>
no <right> <nop>
ino <up> <nop>
ino <down> <nop>
ino <left> <nop>
ino <right> <nop>
" good habits
nn <c-up> <c-y>
nn <c-down> <c-e>
ino <c-up> <c-o><c-y>
ino <c-down> <c-o><c-e>
nn <silent> <c-s-up> :m-2<cr>
nn <silent> <c-s-down> :m+1<cr>
ino <silent> <c-s-up> <c-o>:m-2<cr>
ino <silent> <c-s-down> <c-o>:m+1<cr>
" rebind annoying things
" reflow text
nn Q gq
" split lines (opposite of J)
nn K i<cr><esc>k$
vn K <nop>
" hide search highlighting
nn <silent> <c-]> :nohls<enter>
ino <silent> <c-]> <c-o>:nohls<enter>
" follow tag
nn <bar> <c-]>
" delete line
nn D dd
" this frees up x and X for use
set <s-Del>=[3;2~
nn <s-Del> X
" unfollow your leaders
nn <Leader>p "0p
nn <Leader>P "0P
nn <Leader>e :tabe
if v:version < 703 " even debian stable has 7.3, so...
set nomodeline
else
if &termencoding == "utf-8"
set list listchars=tab:»·,trail,extends:…,nbsp:‗
else
set list listchars=tab:>-,trail:.,extends:>,nbsp:_
endif
endif
" TODO: check if pathogen is installed
execute pathogen#infect()