Add iterm settings, tweak bootstrap, bump eamcs pointer.

Fix web_start.

Add remote_clipboard server stuff.

Bump .emacs.d pointer and add remote_os_copy alias.

Way better get_cols

Made git sui git suir

move to same sha as yelp branch for .emacs.d

Bump emacs pointer.

simplified default code for remote_clipboard.

Remove unused functions from .functions.

Added things from yelp branch.

yelpify

Added field separator to get_cols.

Lots of refactoring. Added .lib directory. Moved dotfiles that get symlinked to ~ into their own directory. Remove some vim configuration.

Remove oh-my-zsh.
This commit is contained in:
Ivan Malison 2013-11-22 10:52:22 -08:00
parent 448eebed44
commit 6174990049
46 changed files with 5647 additions and 901 deletions

107
.aliases
View File

@ -1,107 +0,0 @@
alias g="git"
alias h="history"
alias j="jobs"
alias emacs="emacsclient -t"
alias readlink="greadlink"
# Detect which `ls` flavor is in use
if ls --color > /dev/null 2>&1; then # GNU `ls`
colorflag="--color"
else # OS X `ls`
colorflag="-G"
fi
# Always use color output for `ls`
alias ls="command ls ${colorflag}"
export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
# Enable aliases to be sudoed
alias sudo='sudo '
# Gzip-enabled `curl`
alias gurl="curl --compressed"
# IP addresses
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en1"
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
# Enhanced WHOIS lookups
alias whois="whois -h whois-servers.net"
# Flush Directory Service cache
alias flush="dscacheutil -flushcache && killall -HUP mDNSResponder"
# Clean up LaunchServices to remove duplicates in the “Open With” menu
alias lscleanup="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder"
# View HTTP traffic
alias sniff="sudo ngrep -d 'en1' -t '^(GET|POST) ' 'tcp and port 80'"
alias httpdump="sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E \"Host\: .*|GET \/.*\""
# Canonical hex dump; some systems have this symlinked
command -v hd > /dev/null || alias hd="hexdump -C"
# OS X has no `md5sum`, so use `md5` as a fallback
command -v md5sum > /dev/null || alias md5sum="md5"
# OS X has no `sha1sum`, so use `shasum` as a fallback
command -v sha1sum > /dev/null || alias sha1sum="shasum"
# Trim new lines and copy to clipboard
alias c="tr -d '\n' | pbcopy"
# Recursively delete `.DS_Store` files
alias cleanup="find . -type f -name '*.DS_Store' -ls -delete"
# ROT13-encode text. Works for decoding, too! ;)
alias rot13='tr a-zA-Z n-za-mN-ZA-M'
# Empty the Trash on all mounted volumes and the main HDD
# Also, clear Apples System Logs to improve shell startup speed
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
# Show/hide hidden files in Finder
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
# Hide/show all desktop icons (useful when presenting)
alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
# URL-encode strings
alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1]);"'
# Merge PDF files
# Usage: `mergepdf -o output.pdf input{1,2,3}.pdf`
alias mergepdf='/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py'
# Disable Spotlight
alias spotoff="sudo mdutil -a -i off"
# Enable Spotlight
alias spoton="sudo mdutil -a -i on"
# PlistBuddy alias, because sometimes `defaults` just doesnt cut it
alias plistbuddy="/usr/libexec/PlistBuddy"
# Ring the terminal bell, and put a badge on Terminal.apps Dock icon
# (useful when executing time-consuming commands)
alias badge="tput bel"
# Intuitive map function
# For example, to list all directories that contain a certain file:
# find . -name .gitattributes | map dirname
alias map="xargs -n1"
# One of @janmoesens ProTip™s
for method in GET HEAD POST PUT DELETE TRACE OPTIONS; do
alias "$method"="lwp-request -m '$method'"
done
# Stuff I never really use but cannot delete either because of http://xkcd.com/530/
alias stfu="osascript -e 'set volume output muted true'"
alias pumpitup="osascript -e 'set volume 7'"
alias hax="growlnotify -a 'Activity Monitor' 'System error' -m 'WTF R U DOIN'"
alias tmux="tmux -2"
alias prj='cd ~/Dropbox/Projects'

@ -1 +0,0 @@
Subproject commit 9935c9bdfd61f39f7fdab004a92f192908b9a931

View File

@ -1,215 +0,0 @@
function get_cols() {
# Usage: get_cols [file_name] [column_num]
column_list=""
for column_num in $@
do
[ -r $column_num ] && continue
if echo $column_num | grep '\-F' ; then
separator=$(echo $column_num | sed 's/-F//g' )
continue
fi
[ $column_num -lt '0' ] && column_num="(NF + 1 $column_num )" #Negative indices like python's array[-1]
[ -z $column_list ] && column_num="\$$column_num" || column_num=",\$$column_num" # Place commas appropriately.
column_list="$column_list$column_num"
done
# Is the first parameter a file?
awk_string="BEGIN { FS = \"$separator\" } ; {print $column_list}"
if [ -r $1 ]; then
awk $awk_string $1
else
awk "$awk_string"
fi
unset column_list
unset awk_string
}
function note() {
if [ $# -eq 0 ]; then
(ym && exec $EDITOR $HOME/notes/$(git rev-parse --abbrev-ref HEAD)) ;
else
$EDITOR $HOME/notes/"$*" ;
fi
}
function list_notes() {
ls -c $HOME/notes/ | grep "$*"
}
function get_shas_that_touched() {
git log --oneline --reverse "$@" | get_col 1
}
function echo_hash_if_exp_found_in_filename_diff() {
[ ! -z "$(git diff $1~1 $1 -- $2 | cat | grep $3)" ] && echo $1
}
function get_shas_that_touched_with_grep() {
get_shas_that_touched $1 | xargs -I the_hash sh -c 'echo_hash_if_exp_found_in_filename_diff the_hash $1 $2'
}
function show_interdiffs_matching_grep() {
get_shas_that_touched_with_grep $1 $2 | xargs -I hash sh -c 'git diff hash~1 hash -- $1'
}
function find_all_ssh_agent_sockets() {
find /tmp -type s -name agent.\* 2> /dev/null | grep '/tmp/ssh-.*/agent.*'
}
function set_ssh_agent_socket() {
export SSH_AUTH_SOCK=$(find_all_ssh_agent_sockets | tail -n 1 | awk -F: '{print $1}')
}
# Create a new directory and enter it
function mkd() {
mkdir -p "$@" && cd "$@"
}
# Determine size of a file or total size of a directory
function fs() {
if du -b /dev/null > /dev/null 2>&1; then
local arg=-sbh
else
local arg=-sh
fi
if [[ -n "$@" ]]; then
du $arg -- "$@"
else
du $arg .[^.]* *
fi
}
# Use Gits colored diff when available
hash git &>/dev/null
if [ $? -eq 0 ]; then
function diff() {
git diff --no-index --color-words "$@"
}
fi
# Create a data URL from a file
function dataurl() {
local mimeType=$(file -b --mime-type "$1")
if [[ $mimeType == text/* ]]; then
mimeType="${mimeType};charset=utf-8"
fi
echo "data:${mimeType};base64,$(openssl base64 -in "$1" | tr -d '\n')"
}
# Start an HTTP server from a directory, optionally specifying the port
function server() {
local port="${1:-8000}"
sleep 1 && open "http://localhost:${port}/" &
# Set the default Content-Type to `text/plain` instead of `application/octet-stream`
# And serve everything as UTF-8 (although not technically correct, this doesnt break anything for binary files)
python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
}
# Start a PHP server from a directory, optionally specifying the port
# (Requires PHP 5.4.0+.)
function phpserver() {
local port="${1:-4000}"
local ip=$(ipconfig getifaddr en1)
sleep 1 && open "http://${ip}:${port}/" &
php -S "${ip}:${port}"
}
# Compare original and gzipped file size
function gz() {
local origsize=$(wc -c < "$1")
local gzipsize=$(gzip -c "$1" | wc -c)
local ratio=$(echo "$gzipsize * 100/ $origsize" | bc -l)
printf "orig: %d bytes\n" "$origsize"
printf "gzip: %d bytes (%2.2f%%)\n" "$gzipsize" "$ratio"
}
# Test if HTTP compression (RFC 2616 + SDCH) is enabled for a given URL.
# Send a fake UA string for sites that sniff it instead of using the Accept-Encoding header. (Looking at you, ajax.googleapis.com!)
function httpcompression() {
encoding="$(curl -LIs -H 'User-Agent: Mozilla/5 Gecko' -H 'Accept-Encoding: gzip,deflate,compress,sdch' "$1" | grep '^Content-Encoding:')" && echo "$1 is encoded using ${encoding#* }" || echo "$1 is not using any encoding"
}
# Syntax-highlight JSON strings or files
# Usage: `json '{"foo":42}'` or `echo '{"foo":42}' | json`
function json() {
if [ -t 0 ]; then # argument
python -mjson.tool <<< "$*" | pygmentize -l javascript
else # pipe
python -mjson.tool | pygmentize -l javascript
fi
}
# All the dig info
function digga() {
dig +nocmd "$1" any +multiline +noall +answer
}
# Escape UTF-8 characters into their 3-byte format
function escape() {
printf "\\\x%s" $(printf "$@" | xxd -p -c1 -u)
echo # newline
}
# Decode \x{ABCD}-style Unicode escape sequences
function unidecode() {
perl -e "binmode(STDOUT, ':utf8'); print \"$@\""
echo # newline
}
# Get a characters Unicode code point
function codepoint() {
perl -e "use utf8; print sprintf('U+%04X', ord(\"$@\"))"
echo # newline
}
# Add note to Notes.app (OS X 10.8)
# Usage: `note 'foo'` or `echo 'foo' | note`
function note() {
local text
if [ -t 0 ]; then # argument
text="$1"
else # pipe
text=$(cat)
fi
body=$(echo "$text" | sed -E 's|$|<br>|g')
osascript >/dev/null <<EOF
tell application "Notes"
tell account "iCloud"
tell folder "Notes"
make new note with properties {name:"$text", body:"$body"}
end tell
end tell
end tell
EOF
}
# Add reminder to Reminders.app (OS X 10.8)
# Usage: `remind 'foo'` or `echo 'foo' | remind`
function remind() {
local text
if [ -t 0 ]; then
text="$1" # argument
else
text=$(cat) # pipe
fi
osascript >/dev/null <<EOF
tell application "Reminders"
tell the default list
make new reminder with properties {name:"$text"}
end tell
end tell
EOF
}
# Manually remove a downloaded app or file from the quarantine
function unquarantine() {
for attribute in com.apple.metadata:kMDItemDownloadedDate com.apple.metadata:kMDItemWhereFroms com.apple.quarantine; do
xattr -r -d "$attribute" "$@"
done
}

3
.gitmodules vendored
View File

@ -4,6 +4,3 @@
[submodule ".emacs.d"] [submodule ".emacs.d"]
path = .emacs.d path = .emacs.d
url = git@github.com:IvanMalison/.emacs.d.git url = git@github.com:IvanMalison/.emacs.d.git
[submodule "oh-my-zsh"]
path = oh-my-zsh
url = git@github.com:IvanMalison/oh-my-zsh.git

View File

@ -1,6 +0,0 @@
" Use the excellent Railscat theme by Jeff Kreeftmeijer (gVim-only)
colorscheme railscat
" Use 14pt Menlo
set guifont=Menlo:h14
" Better line-height
set linespace=8

View File

@ -1,2 +0,0 @@
# Disable the startup message
startup_message off

View File

@ -1,210 +0,0 @@
" Vim color file
"
" Author: Tomas Restrepo <tomas@winterdom.com>
"
" Note: Based on the monokai theme for TextMate
" by Wimer Hazenberg and its darker variant
" by Hamish Stuart Macpherson
"
hi clear
set background=dark
if version > 580
" no guarantees for version 5.8 and below, but this makes it stop
" complaining
hi clear
if exists("syntax_on")
syntax reset
endif
endif
let g:colors_name="molokai"
if exists("g:molokai_original")
let s:molokai_original = g:molokai_original
else
let s:molokai_original = 0
endif
hi Boolean guifg=#AE81FF
hi Character guifg=#E6DB74
hi Number guifg=#AE81FF
hi String guifg=#E6DB74
hi Conditional guifg=#F92672 gui=bold
hi Constant guifg=#AE81FF gui=bold
hi Cursor guifg=#000000 guibg=#F8F8F0
hi Debug guifg=#BCA3A3 gui=bold
hi Define guifg=#66D9EF
hi Delimiter guifg=#8F8F8F
hi DiffAdd guibg=#13354A
hi DiffChange guifg=#89807D guibg=#4C4745
hi DiffDelete guifg=#960050 guibg=#1E0010
hi DiffText guibg=#4C4745 gui=italic,bold
hi Directory guifg=#A6E22E gui=bold
hi Error guifg=#960050 guibg=#1E0010
hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold
hi Exception guifg=#A6E22E gui=bold
hi Float guifg=#AE81FF
hi FoldColumn guifg=#465457 guibg=#000000
hi Folded guifg=#465457 guibg=#000000
hi Function guifg=#A6E22E
hi Identifier guifg=#FD971F
hi Ignore guifg=#808080 guibg=bg
hi IncSearch guifg=#C4BE89 guibg=#000000
hi Keyword guifg=#F92672 gui=bold
hi Label guifg=#E6DB74 gui=none
hi Macro guifg=#C4BE89 gui=italic
hi SpecialKey guifg=#66D9EF gui=italic
hi MatchParen guifg=#000000 guibg=#FD971F gui=bold
hi ModeMsg guifg=#E6DB74
hi MoreMsg guifg=#E6DB74
hi Operator guifg=#F92672
" complete menu
hi Pmenu guifg=#66D9EF guibg=#000000
hi PmenuSel guibg=#808080
hi PmenuSbar guibg=#080808
hi PmenuThumb guifg=#66D9EF
hi PreCondit guifg=#A6E22E gui=bold
hi PreProc guifg=#A6E22E
hi Question guifg=#66D9EF
hi Repeat guifg=#F92672 gui=bold
hi Search guifg=#FFFFFF guibg=#455354
" marks column
hi SignColumn guifg=#A6E22E guibg=#232526
hi SpecialChar guifg=#F92672 gui=bold
hi SpecialComment guifg=#465457 gui=bold
hi Special guifg=#66D9EF guibg=bg gui=italic
hi SpecialKey guifg=#888A85 gui=italic
if has("spell")
hi SpellBad guisp=#FF0000 gui=undercurl
hi SpellCap guisp=#7070F0 gui=undercurl
hi SpellLocal guisp=#70F0F0 gui=undercurl
hi SpellRare guisp=#FFFFFF gui=undercurl
endif
hi Statement guifg=#F92672 gui=bold
hi StatusLine guifg=#455354 guibg=fg
hi StatusLineNC guifg=#808080 guibg=#080808
hi StorageClass guifg=#FD971F gui=italic
hi Structure guifg=#66D9EF
hi Tag guifg=#F92672 gui=italic
hi Title guifg=#ef5939
hi Todo guifg=#FFFFFF guibg=bg gui=bold
hi Typedef guifg=#66D9EF
hi Type guifg=#66D9EF gui=none
hi Underlined guifg=#808080 gui=underline
hi VertSplit guifg=#808080 guibg=#080808 gui=bold
hi VisualNOS guibg=#403D3D
hi Visual guibg=#403D3D
hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold
hi WildMenu guifg=#66D9EF guibg=#000000
if s:molokai_original == 1
hi Normal guifg=#F8F8F2 guibg=#272822
hi Comment guifg=#75715E
hi CursorLine guibg=#3E3D32
hi CursorColumn guibg=#3E3D32
hi LineNr guifg=#BCBCBC guibg=#3B3A32
hi NonText guifg=#BCBCBC guibg=#3B3A32
else
hi Normal guifg=#F8F8F2 guibg=#1B1D1E
hi Comment guifg=#465457
hi CursorLine guibg=#293739
hi CursorColumn guibg=#293739
hi LineNr guifg=#BCBCBC guibg=#232526
hi NonText guifg=#BCBCBC guibg=#232526
end
"
" Support for 256-color terminal
"
if &t_Co > 255
hi Boolean ctermfg=135
hi Character ctermfg=144
hi Number ctermfg=135
hi String ctermfg=144
hi Conditional ctermfg=161 cterm=bold
hi Constant ctermfg=135 cterm=bold
hi Cursor ctermfg=16 ctermbg=253
hi Debug ctermfg=225 cterm=bold
hi Define ctermfg=81
hi Delimiter ctermfg=241
hi DiffAdd ctermbg=24
hi DiffChange ctermfg=181 ctermbg=239
hi DiffDelete ctermfg=162 ctermbg=53
hi DiffText ctermbg=102 cterm=bold
hi Directory ctermfg=118 cterm=bold
hi Error ctermfg=219 ctermbg=89
hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold
hi Exception ctermfg=118 cterm=bold
hi Float ctermfg=135
hi FoldColumn ctermfg=67 ctermbg=16
hi Folded ctermfg=67 ctermbg=16
hi Function ctermfg=118
hi Identifier ctermfg=208
hi Ignore ctermfg=244 ctermbg=232
hi IncSearch ctermfg=193 ctermbg=16
hi Keyword ctermfg=161 cterm=bold
hi Label ctermfg=229 cterm=none
hi Macro ctermfg=193
hi SpecialKey ctermfg=81
hi MatchParen ctermfg=16 ctermbg=208 cterm=bold
hi ModeMsg ctermfg=229
hi MoreMsg ctermfg=229
hi Operator ctermfg=161
" complete menu
hi Pmenu ctermfg=81 ctermbg=16
hi PmenuSel ctermbg=244
hi PmenuSbar ctermbg=232
hi PmenuThumb ctermfg=81
hi PreCondit ctermfg=118 cterm=bold
hi PreProc ctermfg=118
hi Question ctermfg=81
hi Repeat ctermfg=161 cterm=bold
hi Search ctermfg=253 ctermbg=66
" marks column
hi SignColumn ctermfg=118 ctermbg=235
hi SpecialChar ctermfg=161 cterm=bold
hi SpecialComment ctermfg=245 cterm=bold
hi Special ctermfg=81 ctermbg=232
hi SpecialKey ctermfg=245
hi Statement ctermfg=161 cterm=bold
hi StatusLine ctermfg=238 ctermbg=253
hi StatusLineNC ctermfg=244 ctermbg=232
hi StorageClass ctermfg=208
hi Structure ctermfg=81
hi Tag ctermfg=161
hi Title ctermfg=166
hi Todo ctermfg=231 ctermbg=232 cterm=bold
hi Typedef ctermfg=81
hi Type ctermfg=81 cterm=none
hi Underlined ctermfg=244 cterm=underline
hi VertSplit ctermfg=244 ctermbg=232 cterm=bold
hi VisualNOS ctermbg=238
hi Visual ctermbg=235
hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold
hi WildMenu ctermfg=81 ctermbg=16
hi Normal ctermfg=252 ctermbg=233
hi Comment ctermfg=59
hi CursorLine ctermbg=234 cterm=none
hi CursorColumn ctermbg=234
hi LineNr ctermfg=250 ctermbg=234
hi NonText ctermfg=250 ctermbg=234
end

View File

@ -1,133 +0,0 @@
" Vim color scheme
"
" Name: railscat.vim
" Maintainer: Jeff Kreeftmeijer
" License: public domain
" URL: https://gist.github.com/1523432
"
" A GUI only extended version of the Railscasts+ theme, that comes with
" Janus [1] and is, in turn, an extension to the original Railscasts theme
" [2], which is a port of the RailsCasts TextMate theme [3] to Vim.
"
" [1] https://github.com/carlhuda/janus
" [2] http://www.vim.org/scripts/script.php?script_id=2175
" [3] http://railscasts.com/about
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "railscat"
" Colors
" Brown #BC9458
" Dark Blue #6D9CBE
" Dark Green #519F50
" Dark Orange #CC7833
" Light Blue #D0D0FF
" Light Green #A5C261
" Tan #FFC66D
hi Normal guifg=#E6E1DC guibg=#2B2B2B
hi Cursor guibg=#FFFFFF
hi Search guibg=#5A647E
hi Visual guibg=#5A647E
" Folds
" -----
" line used for closed folds
hi Folded guifg=#F6F3E8 guibg=#444444 gui=NONE
" Misc
" ----
" directory names and other special names in listings
hi Directory guifg=#A5C261 gui=NONE
" Popup Menu
" ----------
" normal item in popup
hi Pmenu guifg=#F6F3E8 guibg=#444444 gui=NONE
" selected item in popup
hi PmenuSel guifg=#000000 guibg=#A5C261 gui=NONE
" scrollbar in popup
hi PMenuSbar guibg=#5A647E gui=NONE
" thumb of the scrollbar in the popup
hi PMenuThumb guibg=#AAAAAA gui=NONE
"rubyComment
hi Comment guifg=#BC9458 gui=italic
hi Todo guifg=#BC9458 guibg=NONE gui=italic
"rubyPseudoVariable
"nil, self, symbols, etc
hi Constant guifg=#6D9CBE
"rubyClass, rubyModule, rubyDefine
"def, end, include, etc
hi Define guifg=#CC7833
"rubyInterpolation
hi Delimiter guifg=#519F50
"rubyError, rubyInvalidVariable
hi Error guifg=#FFFFFF guibg=#990000
"rubyFunction
hi Function guifg=#FFC66D gui=NONE
"rubyIdentifier
"@var, @@var, $var, etc
hi Identifier guifg=#D0D0FF gui=NONE
"rubyInclude
"include, autoload, extend, load, require
hi Include guifg=#CC7833 gui=NONE
"rubyKeyword, rubyKeywordAsMethod
"alias, undef, super, yield, callcc, caller, lambda, proc
hi Keyword guifg=#CC7833
" same as define
hi Macro guifg=#CC7833 gui=NONE
"rubyInteger
hi Number guifg=#A5C261
" #if, #else, #endif
hi PreCondit guifg=#CC7833 gui=NONE
" generic preprocessor
hi PreProc guifg=#CC7833 gui=NONE
"rubyControl, rubyAccess, rubyEval
"case, begin, do, for, if unless, while, until else, etc.
hi Statement guifg=#CC7833 gui=NONE
"rubyString
hi String guifg=#A5C261
hi Title guifg=#FFFFFF
"rubyConstant
hi Type guifg=#DA4939 gui=NONE
hi DiffAdd guifg=#E6E1DC guibg=#144212
hi DiffDelete guifg=#E6E1DC guibg=#660000
hi link htmlTag xmlTag
hi link htmlTagName xmlTagName
hi link htmlEndTag xmlEndTag
hi xmlTag guifg=#E8BF6A
hi xmlTagName guifg=#E8BF6A
hi xmlEndTag guifg=#E8BF6A
hi StatusLine guibg=#cccccc guifg=#000000
hi StatusLineNC guibg=#666666 guifg=#333333
hi CursorLine guibg=#262626
hi VertSplit guifg=#262626
hi ColorColumn guibg=#262626
hi LineNr guifg=#666666 guibg=#333333
hi NonText guifg=#666666
hi SignColumn guibg=#666666

View File

@ -1,74 +0,0 @@
" Vim syntax file
" Language: JSON
" Maintainer: Jeroen Ruigrok van der Werven <asmodai@in-nomine.org>
" Last Change: 2009-06-16
" Version: 0.4
" {{{1
" Syntax setup {{{2
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if !exists("main_syntax")
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
let main_syntax = 'json'
endif
" Syntax: Strings {{{2
syn region jsonString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=jsonEscape
" Syntax: JSON does not allow strings with single quotes, unlike JavaScript.
syn region jsonStringSQ start=+'+ skip=+\\\\\|\\"+ end=+'+
" Syntax: Escape sequences {{{3
syn match jsonEscape "\\["\\/bfnrt]" contained
syn match jsonEscape "\\u\x\{4}" contained
" Syntax: Strings should always be enclosed with quotes.
syn match jsonNoQuotes "\<\a\+\>"
" Syntax: Numbers {{{2
syn match jsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>"
" Syntax: An integer part of 0 followed by other digits is not allowed.
syn match jsonNumError "-\=\<0\d\.\d*\>"
" Syntax: Boolean {{{2
syn keyword jsonBoolean true false
" Syntax: Null {{{2
syn keyword jsonNull null
" Syntax: Braces {{{2
syn match jsonBraces "[{}\[\]]"
" Define the default highlighting. {{{1
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_json_syn_inits")
if version < 508
let did_json_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsonString String
HiLink jsonEscape Special
HiLink jsonNumber Number
HiLink jsonBraces Operator
HiLink jsonNull Function
HiLink jsonBoolean Boolean
HiLink jsonNumError Error
HiLink jsonStringSQ Error
HiLink jsonNoQuotes Error
delcommand HiLink
endif
let b:current_syntax = "json"
if main_syntax == 'json'
unlet main_syntax
endif

96
.vimrc
View File

@ -1,96 +0,0 @@
" Make Vim more useful
set nocompatible
" Use the OS clipboard by default (on versions compiled with `+clipboard`)
set clipboard=unnamed
" Enhance command-line completion
set wildmenu
" Allow cursor keys in insert mode
set esckeys
" Allow backspace in insert mode
set backspace=indent,eol,start
" Optimize for fast terminal connections
set ttyfast
" Add the g flag to search/replace by default
set gdefault
" Use UTF-8 without BOM
set encoding=utf-8 nobomb
" Change mapleader
let mapleader=","
" Dont add empty newlines at the end of files
set binary
set noeol
" Centralize backups, swapfiles and undo history
set backupdir=~/.vim/backups
set directory=~/.vim/swaps
if exists("&undodir")
set undodir=~/.vim/undo
endif
" Respect modeline in files
set modeline
set modelines=4
" Enable per-directory .vimrc files and disable unsafe commands in them
set exrc
set secure
" Enable line numbers
set number
" Enable syntax highlighting
syntax on
" Highlight current line
set cursorline
" Make tabs as wide as two spaces
set tabstop=2
" Show “invisible” characters
set lcs=tab:▸\ ,trail,eol,nbsp:_
set list
" Highlight searches
set hlsearch
" Ignore case of searches
set ignorecase
" Highlight dynamically as pattern is typed
set incsearch
" Always show status line
set laststatus=2
" Enable mouse in all modes
set mouse=a
" Disable error bells
set noerrorbells
" Dont reset cursor to start of line when moving around.
set nostartofline
" Show the cursor position
set ruler
" Dont show the intro message when starting Vim
set shortmess=atI
" Show the current mode
set showmode
" Show the filename in the window titlebar
set title
" Show the (partial) command as its being typed
set showcmd
" Use relative line numbers
if exists("&relativenumber")
set relativenumber
au BufReadPost * set relativenumber
endif
" Start scrolling three lines before the horizontal window border
set scrolloff=3
" Strip trailing whitespace (,ss)
function! StripWhitespace()
let save_cursor = getpos(".")
let old_query = getreg('/')
:%s/\s\+$//e
call setpos('.', save_cursor)
call setreg('/', old_query)
endfunction
noremap <leader>ss :call StripWhitespace()<CR>
" Save a file as root (,W)
noremap <leader>W :w !sudo tee % > /dev/null<CR>
" Automatic commands
if has("autocmd")
" Enable file type detection
filetype on
" Treat .json files as .js
autocmd BufNewFile,BufRead *.json setfiletype json syntax=javascript
endif

29
.zshrc
View File

@ -1,29 +0,0 @@
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh
# Customize to your needs...
for file in ~/.{path,exports,prompt,aliases,functions,extra}; do
[ -r "$file" ] && source "$file"
done
ZSH_THEME="fino"
# Set to this to use case-sensitive completion
CASE_SENSITIVE="true"
# Comment this out to disable bi-weekly auto-update checks
DISABLE_AUTO_UPDATE="true"
plugins=(git github heroku)
source $ZSH/oh-my-zsh.sh
unset file
# COMPLETION SETTINGS
# add custom completion scripts
fpath=(~/.completions $fpath)
# compsys initialization
autoload -U compinit
compinit

View File

@ -7,21 +7,17 @@ case `uname` in
readlink_command='readlink' readlink_command='readlink'
esac esac
CURRENT_DIRECTORY="$(dirname "${BASH_SOURCE}" | xargs "${readlink_command}" -f)" CURRENT_DIRECTORY="$(dirname "${BASH_SOURCE}" | xargs "${readlink_command}" -f)/dotfiles"
cd $CURRENT_DIRECTORY cd $CURRENT_DIRECTORY
echo "Linking From $CURRENT_DIRECTORY" echo "Linking From $CURRENT_DIRECTORY"
function doIt() { function symlink_dotfiles() {
[[ -a ~/.dotfiles-backups ]] || mkdir ~/.dotfiles-backups [[ -a ~/.dotfiles-backups ]] || mkdir ~/.dotfiles-backups
exclude_list="setup.sh Monaco-Powerline.otf web_start.sh oh-my-zsh tmux-powerline .git .gitmodules .DS_store bootstrap.sh README.md more_python.txt . .. requirements.txt" for filename in *; do
local link_destination="$HOME/.$filename"
for i in .*; do local absolute_path="$($readlink_command -f $filename)"
if ! [ -z ${i/*.swp/} ] && ! [[ $exclude_list =~ $i ]] ln -si $absolute_path $link_destination
then
[[ -a ~/$i ]] && mv ~/$i ~/.dotfiles-backups/$i
ln -si $CURRENT_DIRECTORY/$i ~/$i
fi
done done
} }
@ -31,8 +27,7 @@ else
read -p "This may overwrite existing files in your home directory. Are you sure? (y/n) " -n 1 read -p "This may overwrite existing files in your home directory. Are you sure? (y/n) " -n 1
echo echo
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
doIt symlink_dotfiles
fi fi
fi fi
unset doIt unset symlink_dotfiles
source ~/.bash_profile

5145
com.googlecode.iterm2.plist Normal file

File diff suppressed because it is too large Load Diff

2
dotfiles/bashrc Normal file
View File

@ -0,0 +1,2 @@
source ~/.lib/shellrc.sh
source ~/.lib/bash.sh

View File

@ -7,8 +7,6 @@
d = !"git diff-index --quiet HEAD -- || clear; git diff --patch-with-stat" d = !"git diff-index --quiet HEAD -- || clear; git diff --patch-with-stat"
# `git di $number` shows the diff between the state `$number` revisions ago and the current state # `git di $number` shows the diff between the state `$number` revisions ago and the current state
di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d" di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d"
# Pull in remote changes for the current repository and all its submodules
p = !"git pull; git submodule foreach git pull origin master"
# Clone a repository including all submodules # Clone a repository including all submodules
c = clone --recursive c = clone --recursive
# Commit all changes # Commit all changes
@ -23,9 +21,7 @@
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f" credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"
# Interactive rebase with the given number of latest commits # Interactive rebase with the given number of latest commits
reb = "!r() { git rebase -i HEAD~$1; }; r" reb = "!r() { git rebase -i HEAD~$1; }; r"
# Undo a `git push` suir = submodule update --init --recursive
undopush = push -f origin HEAD^:master
sui = submodule update --init
[core] [core]
# Use custom `.gitignore` and `.gitattributes` # Use custom `.gitignore` and `.gitattributes`
@ -73,3 +69,5 @@
[user] [user]
email = IvanMalison@gmail.com email = IvanMalison@gmail.com
name = Ivan Malison name = Ivan Malison
[merge]
conflictstyle = diff3

View File

@ -14,3 +14,10 @@ Thumbs.db
.Trashes .Trashes
.emacs.desktop .emacs.desktop
.emacs*
# yelp
TAGS
run_tests.sh
untracked/

View File

@ -1,5 +1,3 @@
#!/bin/bash
# Make sure were using the latest Homebrew # Make sure were using the latest Homebrew
brew update brew update
@ -29,6 +27,9 @@ brew install git
brew install tmux brew install tmux
brew install nmap brew install nmap
brew install readline brew install readline
brew install netcat
brew install reattach-to-user-namespace
brew install ngrep
# Remove outdated versions from the cellar # Remove outdated versions from the cellar
brew cleanup brew cleanup

View File

@ -4,7 +4,7 @@ _testify() {
typeset -A opt_args typeset -A opt_args
local context state line local context state line
BASE_TEST_PATH='tests' BASE_TEST_PATH='yelp.tests'
_arguments "1:testify_file:->file" "2:testify_:->test_case" _arguments "1:testify_file:->file" "2:testify_:->test_case"
case $state in case $state in

12
dotfiles/lib/get_cols.awk Normal file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env gawk -f
BEGIN{
column_count=split(cols,column_numbers," ");
}
{
for(i=1; i<=column_count; i++)
if(column_numbers[i] < 0)
printf "%s%s", $(NF + 1 + column_numbers[i]), OFS
else
printf "%s%s", $column_numbers[i], OFS
printf "%s", ORS
}

3
dotfiles/lib/shellrc.sh Normal file
View File

@ -0,0 +1,3 @@
for filename in ~/.lib/shellrc/*; do
source $filename
done

View File

@ -0,0 +1,52 @@
alias script_abspath='$(dirname "${BASH_SOURCE}" | xargs "${readlink_command}" -f)'
alias emacs="emacsclient -t"
alias readlink="greadlink"
alias sudo='sudo '
# IP addresses
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ifconfig getifaddr en1"
alias whois="whois -h whois-servers.net"
# Clean up LaunchServices to remove duplicates in the “Open With” menu
alias lscleanup="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder"
# View HTTP traffic
alias sniff="sudo ngrep -d 'en1' -t '^(GET|POST) ' 'tcp and port 80'"
alias httpdump="sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E \"Host\: .*|GET \/.*\""
# Canonical hex dump; some systems have this symlinked
command -v hd > /dev/null || alias hd="hexdump -C"
# OS X has no `md5sum`, so use `md5` as a fallback
command -v md5sum > /dev/null || alias md5sum="md5"
# OS X has no `sha1sum`, so use `shasum` as a fallback
command -v sha1sum > /dev/null || alias sha1sum="shasum"
# URL-encode strings
alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1]);"'
# Merge PDF files
# Usage: `mergepdf -o output.pdf input{1,2,3}.pdf`
alias mergepdf='/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py'
# Disable Spotlight
alias spotoff="sudo mdutil -a -i off"
# Enable Spotlight
alias spoton="sudo mdutil -a -i on"
# One of @janmoesens ProTip™s
for method in GET HEAD POST PUT DELETE TRACE OPTIONS; do
alias "$method"="lwp-request -m '$method'"
done
alias stfu="osascript -e 'set volume output muted true'"
alias pumpitup="osascript -e 'set volume 7'"
alias tmux="tmux -2"
alias remote_os_copy='linux_nc_paste_to_remote_clipboard'
alias timestamp='date +%s'

View File

@ -0,0 +1,66 @@
function parse_git_branch() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || \
ref=$(git rev-parse --short HEAD 2> /dev/null) || return
echo ${ref#refs/heads/}
}
function current_shell() {
ps -p $$ | tail -1 | awk '{print $NF}' | xargs which | xargs readlink -f
}
function is_zsh() {
test -n "$(current_shell | grep -o zsh)"
}
function get_cols() {
FS=' '
while getopts "F:" OPTCHAR; do
case $OPTCHAR in
F)
FS=$OPTARG
;;
esac
done
shift $((OPTIND-1))
awk -f "$HOME/.lib/get_cols.awk" -v "cols=$*" -v "FS=$FS"
}
function find_all_ssh_agent_sockets() {
find /tmp -type s -name agent.\* 2> /dev/null | grep '/tmp/ssh-.*/agent.*'
}
function set_ssh_agent_socket() {
export SSH_AUTH_SOCK=$(find_all_ssh_agent_sockets | tail -n 1 | awk -F: '{print $1}')
}
# Determine size of a file or total size of a directory
function fs() {
if du -b /dev/null > /dev/null 2>&1; then
local arg=-sbh
else
local arg=-sh
fi
if [[ -n "$@" ]]; then
du $arg -- "$@"
else
du $arg .[^.]* *
fi
}
# Start an HTTP server from a directory, optionally specifying the port
function server() {
local port="${1:-8000}"
sleep 1 && open "http://localhost:${port}/" &
# Set the default Content-Type to `text/plain` instead of `application/octet-stream`
# And serve everything as UTF-8 (although not technically correct, this doesnt break anything for binary files)
python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
}
# All the dig info
function digga() {
dig +nocmd "$1" any +multiline +noall +answer
}
function shell_stats() {
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n20
}

View File

@ -0,0 +1,20 @@
REMOTE_CLIPBOARD_PORT='1234'
function remote_clipboard_server() {
while [ 1 ]
do
netcat -l -p ${1-$REMOTE_CLIPBOARD_PORT} -e "pbcopy"
done
}
function remote_clipboard_server_daemon() {
daemonize `which reattach-to-user-namespace` -l $SHELL -c "source ~/.zshrc; remote_clipboard_server"
}
function linux_nc_paste_to_remote_clipboard() {
nc localhost ${1-$REMOTE_CLIPBOARD_PORT} -q 0
}
function osx_nc_paste_to_remote_clipboard() {
nc localhost ${1-$REMOTE_CLIPBOARD_PORT} -D
}

View File

@ -0,0 +1,87 @@
alias i="ipython tools/interactive.py"
alias apperror="tools/scribereader -e prod -f apperror | tools/pretty_error_log"
alias environ=". ~/.pgconf-$USER/environ.sh"
alias ym="cd ~/pg/yelp-main"
alias live="cd /nail/live/yelp"
alias sb="sandbox -vv --minimal"
function fix_environment_script() {
sed -i 's/export YELP_CONFIG:yelp_conn:replication_delay_params.*$//' $YELP_SANDBOX_ROOT/environment.sh
}
function get_sandbox_identifier() {
echo $YELP_SANDBOX_ROOT | gawk 'match($0, /pgconf-.*-(.*)/, matched) {print matched[1]}'
}
function is_proddb() {
python 2>/dev/null - <<END
import os
import sys
import yaml
def is_proddb_from_topology_info(topology_info):
for cluster_info in topology_info['topology']:
if cluster_info['cluster'] == 'primary':
return cluster_info['entries'][0]['host'] != '127.0.0.1'
def is_proddb_from_topology_filename(topology_filename):
with open(topology_filename) as topology_file:
return is_proddb_from_topology_info(yaml.load(topology_file))
def is_proddb():
try:
topology_filename = os.environ.get('TOPOLOGY_FILE')
if topology_filename:
return is_proddb_from_topology_filename(topology_filename)
return False
except:
pass
sys.exit(0 if is_proddb() else 1)
END
}
function sandbox_prompt_info() {
local sandbox_string=''
if is_proddb
then
sandbox_string="proddb "
fi
if [ "$YELP_IN_SANDBOX" ];
then
sandbox_string=$sandbox_string"sandbox-$(get_sandbox_identifier)"
else
sandbox_string="no sandbox"
fi
echo $sandbox_string
}
function bash_sandbox_color() {
if [ $YELP_IN_SANDBOX ]
then
sandbox_color='\e[0;33m'
else
sandbox_color='\e[0;31m'
fi
}
function zsh_sandbox_color() {
if [ $YELP_IN_SANDBOX ]
then
sandbox_color="%{$FG[149]%}"
else
sandbox_color="%{$FG[001]%}"
fi
echo $sandbox_color
}
function colored_sandbox_string() {
if [ is_zsh ]
then
sandbox_color=$(zsh_sandbox_color)
else
sandbox_color=$(bash_sandbox_color)
fi
echo $sandbox_color$(sandbox_prompt_info)
}

30
dotfiles/lib/zsh.sh Normal file
View File

@ -0,0 +1,30 @@
for filename in ~/.lib/zsh/*; do
source $filename
done
CASE_SENSITIVE="true"
fpath=(~/.lib/completions $fpath)
autoload -U compinit
compinit
# Allow command line editing.
autoload -U edit-command-line
zle -N edit-command-line
bindkey '\C-x\C-e' edit-command-line
local
function current_directory() {
local PWD=$(pwd)
echo "${PWD/#$HOME/~}"
}
function git_prompt_info () {
if test -z $(parse_git_branch);
then
echo ""
else
echo " %{$FG[239]%}on%{$reset_color%} %{$fg[255]%}$(parse_git_branch)%{$reset_color%}"
fi
}
PROMPT="%{$FG[040]%}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} %{$FG[033]%}$(hostname -s)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} %{$terminfo[bold]$FG[226]%}\$(current_directory)%{$reset_color%}\$(git_prompt_info) %{$FG[239]%}with \$(colored_sandbox_string)%{$FG[255]%} "

View File

@ -0,0 +1,72 @@
# fixme - the load process here seems a bit bizarre
unsetopt menu_complete # do not autoselect the first completion entry
unsetopt flowcontrol
setopt auto_menu # show completion menu on succesive tab press
setopt complete_in_word
setopt always_to_end
WORDCHARS=''
zmodload -i zsh/complist
## case-insensitive (all),partial-word and then substring completion
if [ "x$CASE_SENSITIVE" = "xtrue" ]; then
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
unset CASE_SENSITIVE
else
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
fi
zstyle ':completion:*' list-colors ''
# should this be in keybindings?
bindkey -M menuselect '^o' accept-and-infer-next-history
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm -w -w"
# disable named-directories autocompletion
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
cdpath=(.)
# use /etc/hosts and known_hosts for hostname completion
[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _global_ssh_hosts=()
[ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()
[ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
hosts=(
"$_global_ssh_hosts[@]"
"$_ssh_hosts[@]"
"$_etc_hosts[@]"
"$HOST"
localhost
)
zstyle ':completion:*:hosts' hosts $hosts
# Use caching so that commands like apt and dpkg complete are useable
zstyle ':completion::complete:*' use-cache 1
zstyle ':completion::complete:*' cache-path $ZSH/cache/
# Don't complete uninteresting users
zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
mailman mailnull mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
# ... unless we really want to.
zstyle '*' single-ignored show
if [ "x$COMPLETION_WAITING_DOTS" = "xtrue" ]; then
expand-or-complete-with-dots() {
echo -n "\e[31m......\e[0m"
zle expand-or-complete
zle redisplay
}
zle -N expand-or-complete-with-dots
bindkey "^I" expand-or-complete-with-dots
fi

View File

@ -0,0 +1,22 @@
## Command history configuration
HISTFILE=$HOME/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
setopt append_history
setopt extended_history
setopt hist_expire_dups_first
setopt hist_ignore_dups # ignore duplication command history list
setopt hist_ignore_space
setopt hist_verify
setopt inc_append_history
setopt share_history # share command history data
# TODO: Explain what some of this does..
bindkey -e
bindkey '\ew' kill-region
bindkey -s '\el' "ls\n"
bindkey '^r' history-incremental-search-backward
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history

View File

@ -0,0 +1,46 @@
bindkey -e
bindkey '\ew' kill-region
bindkey -s '\el' "ls\n"
bindkey '^r' history-incremental-search-backward
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history
# make search up and down work, so partially type and hit up/down to find relevant stuff
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
bindkey "^[[H" beginning-of-line
bindkey "^[[1~" beginning-of-line
bindkey "^[OH" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^[[4~" end-of-line
bindkey "^[OF" end-of-line
bindkey ' ' magic-space # also do history expansion on space
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey '^[[Z' reverse-menu-complete
# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~
bindkey '^?' backward-delete-char
bindkey "^[[3~" delete-char
bindkey "^[3;5~" delete-char
bindkey "\e[3~" delete-char
bindkey -e ## emacs key bindings
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
bindkey '^[^[[C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word
bindkey -s '^X^Z' '%-^M'
bindkey '^[e' expand-cmd-path
bindkey '^[^I' reverse-menu-complete
bindkey '^X^N' accept-and-infer-next-history
bindkey '^W' kill-region
bindkey '^I' complete-word
# Fix weird sequence that rxvt produces
bindkey -s '^[[Z' '\t'

View File

@ -0,0 +1,28 @@
#!/bin/zsh
# A script to make using 256 colors in zsh less painful.
# P.C. Shyamshankar <sykora@lucentbeing.com>
# Copied from http://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
typeset -Ag FX FG BG
FX=(
reset "%{%}"
bold "%{%}" no-bold "%{%}"
italic "%{%}" no-italic "%{%}"
underline "%{%}" no-underline "%{%}"
blink "%{%}" no-blink "%{%}"
reverse "%{%}" no-reverse "%{%}"
)
for color in {000..255}; do
FG[$color]="%{[38;5;${color}m%}"
BG[$color]="%{[48;5;${color}m%}"
done
# Show all 256 colors with color number
function spectrum_ls() {
for code in {000..255}; do
print -P -- "$code: %{$FG[$code]Test%f%}"
done
}

View File

@ -0,0 +1,35 @@
#usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title
#http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1
#Fully support screen, iterm, and probably most modern xterm and rxvt
#Limited support for Apple Terminal (Terminal can't set window or tab separately)
function title {
if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then
return
fi
if [[ "$TERM" == screen* ]]; then
print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
print -Pn "\e]2;$2:q\a" #set window name
print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal)
fi
}
ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
#Appears when you have the prompt
function omz_termsupport_precmd {
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
}
#Appears at the beginning of (and during) of command execution
function omz_termsupport_preexec {
emulate -L zsh
setopt extended_glob
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
title "$CMD" "%100>...>${2:gs/%/%%}%<<"
}
autoload -U add-zsh-hook
add-zsh-hook precmd omz_termsupport_precmd
add-zsh-hook preexec omz_termsupport_preexec

2
dotfiles/zshrc Normal file
View File

@ -0,0 +1,2 @@
source ~/.lib/shellrc.sh
source ~/.lib/zsh.sh

@ -1 +0,0 @@
Subproject commit ac9588ba3c8b361b11ce969a676a737298a2295f

View File

@ -12,7 +12,7 @@ function osx() {
echo "gcc not found." echo "gcc not found."
exit exit
fi fi
hash brew &>/dev/null && echo "brew found" || ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" hash brew &>/dev/null && echo "brew found" || ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew update brew update
brew install git brew install git
} }