dot-vimrc/vimrc at master · humiaozuzu/dot-vimrc · GitHub


Source: dot-vimrc/vimrc at master · humiaozuzu/dot-vimrc · GitHub


Many usability improvements here.


source ~/.vim/bundles.vim

” encoding dectection
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1

” enable filetype dectection and ft specific plugin/indent
filetype plugin indent on

” enable syntax hightlight and completion
syntax on

” Vim UI
” color scheme
set background=dark
color solarized

” highlight current line
au WinLeave * set nocursorline nocursorcolumn
au WinEnter * set cursorline cursorcolumn
set cursorline cursorcolumn

” search
set incsearch
“set highlight ” conflict with highlight current line
set ignorecase
set smartcase

” editor settings
set history=1000
set nocompatible
set nofoldenable ” disable folding”
set confirm ” prompt when existing from an unsaved file
set backspace=indent,eol,start ” More powerful backspacing
set t_Co=256 ” Explicitly tell vim that the terminal has 256 colors ”
set mouse=a ” use mouse in all modes
set report=0 ” always report number of lines changed ”
set nowrap ” dont wrap lines
set scrolloff=5 ” 5 lines above/below cursor when scrolling
set number ” show line numbers
set showmatch ” show matching bracket (briefly jump)
set showcmd ” show typed command in status bar
set title ” show file in titlebar
set laststatus=2 ” use 2 lines for the status bar
set matchtime=2 ” show matching bracket for 0.2 seconds
set matchpairs+=<:> ” specially for html
” set relativenumber

” Default Indentation
set autoindent
set smartindent ” indent when
set tabstop=4 ” tab width
set softtabstop=4 ” backspace
set shiftwidth=4 ” indent width
” set textwidth=79
” set smarttab
set expandtab ” expand tab to space

autocmd FileType php setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120
autocmd FileType ruby setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120
autocmd FileType php setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120
autocmd FileType coffee,javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120
autocmd FileType python setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120
autocmd FileType html,htmldjango,xhtml,haml setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=0
autocmd FileType sass,scss,css setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120

” syntax support
autocmd Syntax javascript set syntax=jquery ” JQuery syntax support
” js
let g:html_indent_inctags = “html,body,head,tbody”
let g:html_indent_script1 = “inc”
let g:html_indent_style1 = “inc”

” Plugin settings
” Rainbow parentheses for Lisp and variants
let g:rbpt_colorpairs = [
\ [‘brown’, ‘RoyalBlue3′],
\ [‘Darkblue’, ‘SeaGreen3′],
\ [‘darkgray’, ‘DarkOrchid3′],
\ [‘darkgreen’, ‘firebrick3′],
\ [‘darkcyan’, ‘RoyalBlue3′],
\ [‘darkred’, ‘SeaGreen3′],
\ [‘darkmagenta’, ‘DarkOrchid3′],
\ [‘brown’, ‘firebrick3′],
\ [‘gray’, ‘RoyalBlue3′],
\ [‘black’, ‘SeaGreen3′],
\ [‘darkmagenta’, ‘DarkOrchid3′],
\ [‘Darkblue’, ‘firebrick3′],
\ [‘darkgreen’, ‘RoyalBlue3′],
\ [‘darkcyan’, ‘SeaGreen3′],
\ [‘darkred’, ‘DarkOrchid3′],
\ [‘red’, ‘firebrick3′],
\ ]
let g:rbpt_max = 16
autocmd Syntax lisp,scheme,clojure,racket RainbowParenthesesToggle

” tabbar
let g:Tb_MaxSize = 2
let g:Tb_TabWrap = 1

hi Tb_Normal guifg=white ctermfg=white
hi Tb_Changed guifg=green ctermfg=green
hi Tb_VisibleNormal ctermbg=252 ctermfg=235
hi Tb_VisibleChanged guifg=green ctermbg=252 ctermfg=white

” easy-motion
let g:EasyMotion_leader_key = ‘<Leader>’

” Tagbar
let g:tagbar_left=1
let g:tagbar_width=30
let g:tagbar_autofocus = 1
let g:tagbar_sort = 0
let g:tagbar_compact = 1
” tag for coffee
if executable(‘coffeetags’)
let g:tagbar_type_coffee = {
\ ‘ctagsbin’ : ‘coffeetags’,
\ ‘ctagsargs’ : ”,
\ ‘kinds’ : [
\ ‘f:functions’,
\ ‘o:object’,
\ ],
\ ‘sro’ : “.”,
\ ‘kind2scope’ : {
\ ‘f’ : ‘object’,
\ ‘o’ : ‘object’,
\ }
\ }

let g:tagbar_type_markdown = {
\ ‘ctagstype’ : ‘markdown’,
\ ‘sort’ : 0,
\ ‘kinds’ : [
\ ‘h:sections’
\ ]
\ }

” Nerd Tree
let NERDChristmasTree=0
let NERDTreeWinSize=30
let NERDTreeChDirMode=2
let NERDTreeIgnore=[‘\~$’, ‘\.pyc$’, ‘\.swp$’]
” let NERDTreeSortOrder=[‘^__\.py$’, ‘\/$’, ‘*’, ‘\.swp$’, ‘\~$’]
let NERDTreeShowBookmarks=1
let NERDTreeWinPos = “right”

” nerdcommenter
let NERDSpaceDelims=1
” nmap <D-/> :NERDComToggleComment<cr>
let NERDCompactSexyComs=1

” ZenCoding
let g:user_emmet_expandabbr_key='<C-j>’

” powerline
“let g:Powerline_symbols = ‘fancy’

” NeoComplCache
let g:neocomplcache_enable_at_startup=1
let g:neoComplcache_disableautocomplete=1
“let g:neocomplcache_enable_underbar_completion = 1
“let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_smart_case=1
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = ‘\*ku\*’
set completeopt-=preview

imap <C-k> <Plug>(neocomplcache_snippets_force_expand)
smap <C-k> <Plug>(neocomplcache_snippets_force_expand)
imap <C-l> <Plug>(neocomplcache_snippets_force_jump)
smap <C-l> <Plug>(neocomplcache_snippets_force_jump)

” Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType c setlocal omnifunc=ccomplete#Complete
if !exists(‘g:neocomplcache_omni_patterns’)
let g:neocomplcache_omni_patterns = {}
let g:neocomplcache_omni_patterns.erlang = ‘[a-zA-Z]\|:’

” SuperTab
” let g:SuperTabDefultCompletionType=’context’
let g:SuperTabDefaultCompletionType = ‘<C-X><C-U>’
let g:SuperTabRetainCompletionType=2

” ctrlp
set wildignore+=*/tmp/*,*.so,*.o,*.a,*.obj,*.swp,*.zip,*.pyc,*.pyo,*.class,.DS_Store ” MacOSX/Linux
let g:ctrlp_custom_ignore = ‘\.git$\|\.hg$\|\.svn$’

” Keybindings for plugin toggle
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
nmap <F5> :TagbarToggle<cr>
nmap <F6> :NERDTreeToggle<cr>
nmap <F3> :GundoToggle<cr>
nmap <F4> :IndentGuidesToggle<cr>
nmap <D-/> :
nnoremap <leader>a :Ack
nnoremap <leader>v V`]

” Useful Functions
” easier navigation between split windows
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-h> <c-w>h
nnoremap <c-l> <c-w>l

” When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if ! exists(“g:leave_my_cursor_position_alone”) |
\ if line(“‘\””) > 0 && line (“‘\””) <= line(“$”) |
\ exe “normal g’\”” |
\ endif |
\ endif

” w!! to sudo & write a file
cmap w!! %!sudo tee >/dev/null %

” Quickly edit/reload the vimrc file
nmap <silent> <leader>ev :e $MYVIMRC<CR>
nmap <silent> <leader>sv :so $MYVIMRC<CR>

” sublime key bindings
nmap <D-]> >>
nmap <D-[> <<
vmap <D-[> <gv
vmap <D-]> >gv

” eggcache vim
nnoremap ; :
:command W w
:command WQ wq
:command Wq wq
:command Q q
:command Qa qa
:command QA qa

” for macvim
if has(“gui_running”)
set go=aAce ” remove toolbar
“set transparency=30
set guifont=Monaco:h13
set showtabline=2
set columns=140
set lines=40
noremap <D-M-Left> :tabprevious<cr>
noremap <D-M-Right> :tabnext<cr>
map <D-1> 1gt
map <D-2> 2gt
map <D-3> 3gt
map <D-4> 4gt
map <D-5> 5gt
map <D-6> 6gt
map <D-7> 7gt
map <D-8> 8gt
map <D-9> 9gt
map <D-0> :tablast<CR>




Posted in code | Tagged | Leave a comment

GitHub Got Silly Rich. Next Step: ‘Make More Awesome’

Four years into its journey as a company, GitHub remained something of an independent. The startup, which helps companies and developers build software, rebuffed the repeated advances of venture capitalists. Then, last July, GitHub flipped the bit and took $100 million from Andreessen Horowitz, gorging at the venture-capital trough like some kind of hideously large and famished money hog. (Yes, these things exist.)

Asked why GitHub would need so much money, Chief Executive Tom Preston-Werner replies with an answer that fits his laid-back persona: “To make more awesome.” It’s an unsatisfying response, but you can reasonably (sort of?) say such things when you’re the Grand Poobah of the software universe.

GitHub got its start as a type of productivity/collaboration service for open-source software developers. Someone would decide to create a new application and opt to put his code up on the GitHub website. Other people could then see the code and contribute to the project, and GitHub’s tools would document the changes, let the developers chat with each other, and make it easier for people to combine their various bits and pieces into a working whole. Similar things had existed for years; they just weren’t that good.

ahabman‘s insight:

With github in the news ( and the news in github (, I expect to see development tools trickle into the consumer space in 2014. Designers need version control, Project managers need branches, Strategists need diffs, and VPs need pull requests. The technology is solid, it will be up to the interface and experience masters to deliver this to the cutting edge efficiency-hungy masses.

See on

Posted in Uncategorized | Leave a comment

WordPress Custom Post Type Dynamic Sub Pages

The Problem

You can’t separate a Custom Post Type into multiple pages. e.g. a project home page, and a project details sub page, and a project activity sub page, etc.

Related Links:

A Solution

Utilize add_rewrite_tag and add_rewrite rule inside functions.php. This will allow you to have URLs like:
  • /project/project-title (default WordPress URL)
  • /project/project-title/details (custom “details” sub page of the “project” custom post type )
  • /project/project-title/activity (custom “activity” sub page of the “project” custom post type )
function custom_post_type_sub_page_urls(){
  add_rewrite_tag('%custom_post_type_sub_page%', '([^&]+)');
add_action('init', 'custom_post_type_sub_page_urls');

Then in you Custom Post Type single template single-project.php

switch ($wp_query->query_vars['custom_post_type_sub_page']) {
case 'details':
  // render single-project-details.php
case 'activity':
  // render single-project-activity.php

I utilized this to show different groups of custom fields per page.  I’m using the %postname% permalink format.

Posted in code | 1 Comment

Ale to the Chief: White House Beer Recipe

Posted in Uncategorized | Leave a comment

Rhythm visualization

Launch the rhythm visualization demo

Continuing from my first iteration on a visual metronome, this is an improvement to simplify things while providing greater control in the UI for: tempo, cycles (bars), beats, and emphasis highlighting (nth). My intention is for this to evolve toward a metric modulation visualization.

I moved from the traditional European music notation of left to right / top to bottom, and used a more abstract top to bottom / left to right orientation. Most often I work with more bars than beats, so this worked nicely for laptop screen dimensions. Also, I enjoy nudging the musician away from the usual way we visually experience music.

Thanks to James Edwards article on javascript timing, and of course the jQuery team.

Posted in code, javascript, jQuery, music | Leave a comment


Listen to “Wellspring”

Posted in music | Leave a comment

Willow Weep for Me

Listen to “Willow Weep for Me”

Posted in music | Leave a comment

Do Nothing Till You Hear From Me

Listen to “Do Nothing Till You Hear From Me”

Posted in music | Leave a comment

Command finished notification with Ruby

I wanted a visual notification in Ubuntu when long running commands finished in Terminal. My solution, run the command and pipe it into notify.

$ a-long-running-command | notify


#!/usr/bin/env ruby
require 'rubygems'
require 'libnotify' :summary => "Command finished.", :body => "#{}"

Make it executable

chmod u+x ~/scripts/notify.rb

add an alias to it in ~/.bashrc

alias notify="~/scripts/notify.rb"

, rubygems, and libnotify.

Similar solutions:
“alert” alias (I’ll be switching to this in Maverick),
a python version

Posted in code, ruby, ubuntu | Leave a comment


A little flavor of Tinariwen. Tuned D G D G A D.

Listen to “nomad”

Posted in music | Leave a comment