diff options
-rw-r--r-- | .gitignore | 9 | ||||
-rw-r--r-- | .gitmodules | 0 | ||||
-rw-r--r-- | colors/zlg.vim | 79 | ||||
-rw-r--r-- | gvimrc | 7 | ||||
-rwxr-xr-x | update-plugins | 28 | ||||
-rw-r--r-- | vimrc | 260 | ||||
-rw-r--r-- | vopher.list | 8 |
7 files changed, 391 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5eb075c --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +autoload +after +bundle +spell +tags +.netrwhist +*.swp +*.bak +vopher.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.gitmodules diff --git a/colors/zlg.vim b/colors/zlg.vim new file mode 100644 index 0000000..49fc086 --- /dev/null +++ b/colors/zlg.vim @@ -0,0 +1,79 @@ +" Color scheme "zlg" +" by zlg <zlg@zelibertinegamer.me> + +set background=dark +hi clear +if exists("syntax on") + syntax reset +endif +let g:colors_name = "zlg" + +hi ModeMsg ctermfg=green ctermbg=NONE gui=bold guifg=#00cc00 guibg=NONE + +" I can't stand it when the cursor is lost on matching braces. +hi MatchParen cterm=NONE ctermfg=yellow ctermbg=magenta gui=NONE guifg=#ffffff guibg=#0044aa + +" The current file should be obvious; the others can be faded. +hi StatusLineNC cterm=inverse ctermbg=NONE ctermfg=darkblue gui=NONE guifg=#000000 guibg=#1f4e6e +hi StatusLine cterm=inverse ctermbg=NONE ctermfg=white gui=bold guifg=#000000 guibg=#ffffff + +" Tabs should be styled, too! +hi TabLine cterm=NONE ctermbg=blue ctermfg=cyan +hi TabLineSel cterm=bold,inverse ctermbg=blue ctermfg=white +hi TabLineFill cterm=NONE ctermbg=darkblue ctermfg=NONE + +" Line numbers should be just-visible, not bright. +hi LineNr ctermfg=magenta cterm=NONE ctermbg=darkgray gui=NONE guifg=#a99c7f guibg=#292012 +hi Visual ctermfg=NONE cterm=inverse ctermbg=black gui=inverse guifg=NONE guibg=#000000 +hi VisualNOS ctermfg=NONE cterm=inverse ctermbg=black gui=inverse guifg=NONE guibg=#000000 + +" My splits should not be bright +hi VertSplit cterm=NONE ctermfg=blue ctermbg=NONE gui=bold guifg=#000000 guibg=#1f4e6e + +" Folds are kind of a big deal +hi Folded cterm=NONE ctermfg=blue ctermbg=black gui=NONE guifg=NONE guibg=NONE + +" Proceed with the generic highlight types +hi Constant cterm=NONE ctermfg=magenta ctermbg=NONE gui=NONE guifg=#d667c7 guibg=NONE +hi Comment cterm=NONE ctermfg=darkgreen ctermbg=NONE gui=NONE guifg=#009922 guibg=NONE +hi Delimiter cterm=NONE ctermfg=red ctermbg=NONE gui=NONE guifg=#bb0000 guibg=NONE +hi DiffDelete cterm=NONE ctermfg=gray ctermbg=red gui=bold guifg=#000000 guibg=#880000 +hi Define cterm=NONE ctermfg=darkmagenta ctermbg=NONE gui=NONE guifg=#9d5db0 guibg=NONE +hi Error cterm=NONE ctermfg=white ctermbg=red gui=bold guifg=#ffffff guibg=#ff0000 +hi Function cterm=NONE ctermfg=yellow ctermbg=NONE gui=bold guifg=#ffff00 guibg=NONE +hi Include cterm=NONE ctermfg=darkyellow ctermbg=NONE gui=NONE guifg=#d7c667 guibg=NONE +hi Macro cterm=NONE ctermfg=darkmagenta ctermbg=NONE gui=NONE guifg=#8a67ac guibg=NONE +hi NonText cterm=NONE ctermfg=darkgray ctermbg=NONE gui=NONE guifg=#333333 guibg=NONE +hi Normal cterm=NONE ctermfg=NONE ctermbg=NONE gui=NONE guifg=#ffffff guibg=#071013 +hi PreProc cterm=NONE ctermfg=magenta ctermbg=NONE gui=bold guifg=#a249a2 guibg=NONE +hi Search cterm=inverse ctermfg=yellow ctermbg=NONE gui=NONE guifg=#000000 guibg=#ffff00 +hi SpecialKey cterm=NONE ctermfg=darkgray ctermbg=NONE gui=NONE guifg=#333333 guibg=NONE +hi SpecialChar cterm=NONE ctermfg=red ctermbg=NONE gui=bold guifg=#dd5500 guibg=NONE +hi Statement cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=#999999 guibg=NONE +hi String cterm=NONE ctermfg=darkcyan ctermbg=NONE gui=NONE guifg=#568cd1 guibg=NONE +hi Todo cterm=NONE ctermfg=yellow ctermbg=darkgreen gui=NONE guifg=#ffff00 guibg=#008800 +hi Type cterm=NONE ctermfg=green ctermbg=NONE gui=bold guifg=#5f7dc3 guibg=NONE +hi Number cterm=NONE ctermfg=white ctermbg=NONE gui=bold guifg=#ffffff guibg=NONE +hi Operator cterm=NONE ctermfg=darkyellow ctermbg=NONE gui=NONE guifg=#a99c7f guibg=NONE +hi Identifier cterm=NONE ctermfg=cyan ctermbg=NONE gui=NONE guifg=#00ccff guibg=NONE + +" Linked highlights +hi link Structure Define +hi link Conditional Function +hi link Repeat Function +hi link Float Number + +" PHP Styles {{{ +hi link phpIdentifier Identifier +hi link phpVarSelector Identifier +hi link phpStringDouble String +hi link phpStringSingle String +hi link phpComparison Operator +hi link phpParent Normal +" }}} + +" Markdown Styles {{{ +hi Title cterm=bold ctermfg=white ctermbg=NONE gui=bold guifg=#ffffff guibg=NONE +" }}} + +" vim: fdm=marker @@ -0,0 +1,7 @@ +" Options for the GUI + +set gfn=Envy\ Code\ R\ 12 +set columns=100 +set lines=30 +set window=48 +set guioptions=aLM diff --git a/update-plugins b/update-plugins new file mode 100755 index 0000000..856f85a --- /dev/null +++ b/update-plugins @@ -0,0 +1,28 @@ +#!/bin/sh +# This is a simple front-end to vopher that will update all your plugins, +# clean up plugins that aren't in PLUGIN_LIST, and prune all .zip files. +# What more could you ask for from a wrapper? + +die() { + echo "$1" && exit +} + +PLUGIN_PATH="$HOME/projects/vimrc/bundle" +PLUGIN_LIST="$HOME/projects/vimrc/vopher.list" +_has_sparkup=$(grep -c sparkup ${PLUGIN_LIST}) +_tmp=$(pwd) +if [ "$_has_sparkup" -a -d ./bundle/sparkup ]; then + cd bundle/sparkup + unlink doc + unlink ftplugin + cd "$_tmp" +fi +_cmd="vopher -f "$PLUGIN_LIST" -dir "$PLUGIN_PATH" -ui=simple" +$_cmd -force update 2>vopher.log 1>/dev/null || die "Could not update! Consult vopher.log for details." +$_cmd -force -all prune 2>>vopher.log 1>/dev/null || die "Could not prune! Consult vopher.log for details." +if [ $_has_sparkup ]; then + cd "${PLUGIN_PATH}/sparkup" + make vim-pathogen --quiet + cd "$_tmp" +fi +echo "Plugins successfully updated." @@ -0,0 +1,260 @@ +" General {{{1 +set nocompatible +let g:use_dvorak = 1 +let g:leave_my_cursor_position_alone = '' +let PHP_vintage_case_default_indent = 1 +let c_no_comment_fold = 1 +set fileformats=unix,dos,mac +set spelllang=en_us +set switchbuf=useopen + +" Colors and Syntax {{{1 +set background=dark +colorscheme zlg +if has('syntax') && !exists('g:syntax_on') + syntax enable +endif + +" Plugin-Specific {{{1 +call pathogen#infect('bundle/{}') +Helptags + +" Formatting {{{1 +set formatprg=par-format\ w80 +set printoptions=paper:letter,top:0.5in,left:0.5in,right:0.5in,bottom:0.5in,syntax:n,header:0 +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set noexpandtab +set formatoptions=tcqn + +" Usability {{{1 +set whichwrap=<,>,[,],h,l +set scrolloff=2 +set backspace=indent,eol,start +set ttimeout +set ttimeoutlen=50 +set timeoutlen=3000 +set incsearch +set number +set numberwidth=5 +set hidden +set mouse=n + +" Interface {{{1 +set display+=lastline +set list +"set listchars=tab:⇥\ ,trail:␣,extends:⇉,precedes:⇇,nbsp:⚭,eol:¬ +if &listchars ==# 'eol:$' + set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ + if &termencoding ==# 'utf-8' || &encoding ==# 'utf-8' + let &listchars = "tab:\u21e5 ,trail:\u2423,extends:\u21c9,precedes:\u21c7,nbsp:\u26ad,eol:\u00ac" + endif +endif +set splitright +set splitbelow +set laststatus=2 +" Example: (1) .vimrc [vim][+] 48,22 123L 0x20 +set statusline=(%n)\ %f\ %y%r%m\ %l,%v\ %LL\ 0x%B +set fillchars=fold:\ ,vert:\| +set wrap +set linebreak + +" Anti-Annoyance {{{1 +set nostartofline +set novisualbell +set noautoindent + +" Folding {{{1 +set foldmethod=expr +set foldtext=MyFoldText() + +function! MyFoldText() + let line = getline(v:foldstart) + let folded_lines = v:foldend - v:foldstart + return line . ' (' . folded_lines . 'L)' +endfunction + +" Autocommands {{{1 +if has("autocmd") + filetype plugin indent on + autocmd BufNewFile,BufRead /media/sd/Games/*.[0123456789].txt setfiletype sctxt + autocmd BufNewFile,BufRead *.txt setfiletype text + " All Markdown and TXT files need to be hard wrapped to 80 characters. + autocmd FileType text,markdown setlocal nonumber tabstop=4 softtabstop=4 shiftwidth=4 expandtab formatoptions=tcqwn textwidth=80 nolist colorcolumn=81 + autocmd FileType python setlocal expandtab + autocmd BufNewFile,BufRead *.ledger setlocal nonumber iskeyword+=: filetype=ledger + autocmd FileType help setlocal colorcolumn=0 + autocmd FileType vim setlocal keywordprg=:help + autocmd FileType c setlocal foldmethod=syntax + " Needed for game guides on the SuperCard DSTWO; this is also true of + " homebrew apps that use monospace fonts at normal scale. The DSTWO throws + " up on linebreaks if it's not DOS, iso8859-1 text. The limit is set to + " allow for a character or two that might be wider than an M or W. + autocmd FileType sctxt setlocal enc=latin1 ff=dos tw=30 cc=31 fo=tcqwn nolist et ts=4 sts=4 sw=4 +endif + +" Key Bindings {{{1 +nnoremap <leader>i :call <SID>SynStack()<CR> +nnoremap <leader>l :set list!<CR> +nnoremap <leader>n :set number!<CR> +nnoremap <leader>t :setfiletype text<CR> +nnoremap <leader>s :set spell!<CR> +nnoremap <leader>c :call <SID>CountCodeLines()<CR> +nnoremap <leader>d :call <SID>InsertDOW()<CR> +nnoremap <leader>D "=strftime("%Y-%m-%d %H:%M", localtime())<CR>p +nnoremap <Space> za +nnoremap <silent> <F5> :call <SID>StripTrailingWhitespaces()<CR> + +" Thanks to /u/spupy for these short and sweet mappings that replace the +" simpler functions of tpope's surround.vim plugin. Each of these will +" surround the current (or last) visual selection with the specified +" character. +noremap <Leader>w" <ESC>`>a"<ESC>`<i"<ESC> +noremap <Leader>w' <ESC>`>a'<ESC>`<i'<ESC> +noremap <Leader>w( <ESC>`>a)<ESC>`<i(<ESC> +noremap <Leader>w[ <ESC>`>a]<ESC>`<i[<ESC> +noremap <Leader>w{ <ESC>`>a}<ESC>`<i{<ESC> +noremap <Leader>w< <ESC>`>a><ESC>`<i<<ESC> +noremap <Leader>w` <ESC>`>a`<ESC>`<i`<ESC> + + +" Dvorak Hackery {{{1 +if (exists("g:use_dvorak") && g:use_dvorak == 1) + " I use a Dvorak keyboard, so standard vim movement keys are a hassle. + " Since mnemonics are helpful all around, I need a mapping that gives me + " pain-free file navigation without screwing up mnemonics (too much). + " + " Thus: + " (D)elete is now (K)ill: d2w == k2w "kill 2 words" + " Un(T)il is now (J)ump-To: dt( == kj( "kill, jump-to paren" + " (N)ext is now (L)eap: cn == cl "change up to leap point" + + " Standard movement, which is the true focus of this hack. + " Mnemonics are awesome, so let's preserve as much as possible. + noremap d h + noremap h j + noremap t k + noremap n l + noremap D H + noremap H J + noremap T K + noremap N L + + noremap gh gj + noremap gt gk + + " I work with tabs every now and then. No, I don't have a mnemonic, so + " stfu. + noremap gj gt + noremap gJ gT + + " Window movement, equally important + noremap <C-w>d <C-w>h + noremap <C-w>h <C-w>j + noremap <C-w>t <C-w>k + noremap <C-w>n <C-w>l + + nnoremap <C-w><C-d> <C-w><C-h> + nnoremap <C-w><C-h> <C-w><C-j> + nnoremap <C-w><C-t> <C-w><C-k> + nnoremap <C-w><C-n> <C-w><C-l> + + nnoremap <C-d> <C-w>h + nnoremap <C-h> <C-w>j + nnoremap <C-t> <C-w>k + nnoremap <C-n> <C-w>l + + " Account for tag jumping + nnoremap <C-j> <C-t> + + " Remappings for the D key + noremap k d + noremap K D + + " Remappings for the T key + noremap j t + noremap J T + + " Remapping for the L key + noremap l n + noremap L N + + " General purpose help; the originals remain for convenience + noremap - 0 + noremap _ $ + + " Fold-related keybindings + noremap zh zj + noremap zt zk + +endif + +" Functions {{{1 +" Credit to Drew Neil of vimcasts.org +function! <SID>StripTrailingWhitespaces() " {{{2 + " Save last search and cursor position + let _s=@/ + let l = line(".") + let c = col(".") + " Do the business: + %s/\s\+$//e + " Restore previous search history and cursor position + let @/=_s + call cursor(l, c) +endfunction + +" Credit to Drew Neil of vimcasts.org +function! <SID>SynStack() " {{{2 + if !exists("*synstack") + return + endif + echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') +endfunction + +function! <SID>CountCodeLines() " {{{2 + let code_count = 0 + for line in getbufline("%", 1, "$") + if (len(line) > 0 && match(line, '\S\+') > -1) + if (s:IsCommentLine(line) == 1) + continue + endif + let code_count += 1 + endif + endfor + echo code_count . ' lines of code.' +endfunction + +function! s:IsCommentLine(line) " {{{2 + let l:comtypes = [] + let l:comlist = split(&comments, ',') + for i in comlist + let l:type = split(i, ':') + if len(type) > 1 + let l:opt = type[1] + else + let l:opt = type[0] + endif + call add(comtypes, opt) + endfor + let i = 0 + while i < len(comtypes) + if match(a:line, '^\s*' . escape(comtypes[i], '/*')) > -1 + return 1 + endif + let i += 1 + endwhile + return 0 +endfunction + +function! <SID>InsertDOW() " {{{2 + " Let's backup a random register + let tmpx = @x + let @x = system("date +\"%a \" -d" . strftime("%Y") . "-" . substitute(expand("<cWORD>"), ":", "", "")) + normal "xP + " Join, since it apparently is on a line instead of just a string + j 1 + " Return the value in the x register + let @x = tmpx +endfunction +" vim: foldmethod=marker diff --git a/vopher.list b/vopher.list new file mode 100644 index 0000000..2085a79 --- /dev/null +++ b/vopher.list @@ -0,0 +1,8 @@ +commentary http://github.com/tpope/vim-commentary +fugitive http://github.com/tpope/vim-fugitive +gnupg http://github.com/jamessan/vim-gnupg +goyo http://github.com/junegunn/goyo.vim +ledger http://github.com/ledger/vim-ledger +pathogen http://github.com/tpope/vim-pathogen +sparkup http://github.com/rstacruz/sparkup +tabular http://github.com/godlygeek/tabular |