Created
April 3, 2016 17:10
-
-
Save Hackforid/28d619ea28330e64b92e4f5ed25aa546 to your computer and use it in GitHub Desktop.
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
# Path to your oh-my-zsh configuration. | |
ZSH=$HOME/.oh-my-zsh | |
# Set name of the theme to load. | |
# Look in ~/.oh-my-zsh/themes/ | |
# Optionally, if you set this to "random", it'll load a random theme each | |
# time that oh-my-zsh is loaded. | |
ZSH_THEME="gentoo" | |
# Example aliases | |
# alias zshconfig="mate ~/.zshrc" | |
# alias ohmyzsh="mate ~/.oh-my-zsh" | |
# 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" | |
# Uncomment to change how often before auto-updates occur? (in days) | |
# export UPDATE_ZSH_DAYS=13 | |
# Uncomment following line if you want to disable colors in ls | |
# DISABLE_LS_COLORS="true" | |
# Uncomment following line if you want to disable autosetting terminal title. | |
# DISABLE_AUTO_TITLE="true" | |
# Uncomment following line if you want to disable command autocorrection | |
# DISABLE_CORRECTION="true" | |
# Uncomment following line if you want red dots to be displayed while waiting for completion | |
# COMPLETION_WAITING_DOTS="true" | |
# Uncomment following line if you want to disable marking untracked files under | |
# VCS as dirty. This makes repository status check for large repositories much, | |
# much faster. | |
# DISABLE_UNTRACKED_FILES_DIRTY="true" | |
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) | |
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |
# Example format: plugins=(rails git textmate ruby lighthouse) | |
plugins=(cp vagrant archlinux python django systemd github pip vundle Completion git git-extras gitfast colorize) | |
source $ZSH/oh-my-zsh.sh | |
# Customize to your needs... | |
export ANDROID_HOME=/Users/kleist/code/AndroidSDK/sdk/ | |
#关于历史纪录的配置 {{{ | |
#历史纪录条目数量 | |
export HISTSIZE=10000 | |
#注销后保存的历史纪录条目数量 | |
export SAVEHIST=10000 | |
#历史纪录文件 | |
export HISTFILE=~/.zhistory | |
#以附加的方式写入历史纪录 | |
setopt INC_APPEND_HISTORY | |
#如果连续输入的命令相同,历史纪录中只保留一个 | |
setopt HIST_IGNORE_DUPS | |
#为历史纪录中的命令添加时间戳 | |
setopt EXTENDED_HISTORY | |
#启用 cd 命令的历史纪录,cd -[TAB]进入历史路径 | |
setopt AUTO_PUSHD | |
#相同的历史路径只保留一个 | |
setopt PUSHD_IGNORE_DUPS | |
#每个目录使用独立的历史纪录{{{ | |
cd() { | |
builtin cd "$@" # do actual cd | |
fc -W # write current history file | |
local HISTDIR="$HOME/.zsh_history$PWD" # use nested folders for history | |
if [ ! -d "$HISTDIR" ] ; then # create folder if needed | |
mkdir -p "$HISTDIR" | |
fi | |
export HISTFILE="$HISTDIR/zhistory" # set new history file | |
touch $HISTFILE | |
local ohistsize=$HISTSIZE | |
HISTSIZE=0 # Discard previous dir's history | |
HISTSIZE=$ohistsize # Prepare for new dir's history | |
fc -R #read from current histfile | |
} | |
mkdir -p $HOME/.zsh_history$PWD | |
export HISTFILE="$HOME/.zsh_history$PWD/zhistory" | |
function allhistory { cat $(find $HOME/.zsh_history -name zhistory) } | |
function convhistory { | |
sort $1 | uniq | | |
sed 's/^:\([ 0-9]*\):[0-9]*;\(.*\)/\1::::::\2/' | | |
awk -F"::::::" '{ $1=strftime("%Y-%m-%d %T",$1) "|"; print }' | |
} | |
#使用 histall 命令查看全部历史纪录 | |
function histall { convhistory =(allhistory) | | |
sed '/^.\{20\} *cd/i\\' } | |
#使用 hist 查看当前目录历史纪录 | |
function hist { convhistory $HISTFILE } | |
#全部历史纪录 top50 | |
function top50 { allhistory | awk -F':[ 0-9]*:[0-9]*;' '{ $1="" ; print }' | sed 's/ /\n/g' | sed '/^$/d' | sort | uniq -c | sort -nr | head -n 50 } | |
#}}} | |
#杂项 {{{ | |
#允许在交互模式中使用注释 例如: | |
#cmd #这是注释 | |
setopt INTERACTIVE_COMMENTS | |
#启用自动 cd,输入目录名回车进入目录 | |
#稍微有点混乱,不如 cd 补全实用 | |
setopt AUTO_CD | |
#扩展路径 | |
#/v/c/p/p => /var/cache/pacman/pkg | |
setopt complete_in_word | |
#Emacs风格 键绑定 | |
bindkey -e | |
#bindkey -v | |
# | |
#设置 [DEL]键 为向后删除 | |
bindkey "\e[3~" delete-char | |
#以下字符视为单词的一部分 | |
WORDCHARS='*?_-[]~=&;!#$%^(){}<>' | |
#}}} | |
##行编辑高亮模式 {{{ | |
# Ctrl+@ 设置标记,标记和光标点之间为 region | |
zle_highlight=(region:bg=magenta #选中区域 | |
special:bold #特殊字符 | |
isearch:underline)#搜索时使用的关键字 | |
#}}} | |
##空行(光标在行首)补全 "cd " {{{ | |
user-complete(){ | |
case $BUFFER in | |
"" ) # 空行填入 "cd " | |
BUFFER="cd " | |
zle end-of-line | |
zle expand-or-complete | |
;; | |
"cd --" ) # "cd --" 替换为 "cd +" | |
BUFFER="cd +" | |
zle end-of-line | |
zle expand-or-complete | |
;; | |
"cd +-" ) # "cd +-" 替换为 "cd -" | |
BUFFER="cd -" | |
zle end-of-line | |
zle expand-or-complete | |
;; | |
* ) | |
zle expand-or-complete | |
;; | |
esac | |
} | |
zle -N user-complete | |
bindkey "\t" user-complete | |
#}}} | |
##在命令前插入 sudo {{{ | |
#定义功能 | |
sudo-command-line() { | |
[[ -z $BUFFER ]] && zle up-history | |
[[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER" | |
zle end-of-line #光标移动到行末 | |
} | |
zle -N sudo-command-line | |
#定义快捷键为: [Esc] [Esc] | |
bindkey "\e\e" sudo-command-line | |
#}}} | |
#命令别名 {{{ | |
#alias ls='ls -F --color=auto' | |
alias ll='ls -al' | |
alias grep='grep --color=auto' | |
alias la='ls -a' | |
alias y='yaourt' | |
alias h='htop' | |
alias sss='source ~/.zshrc' | |
#[Esc][h] man 当前命令时,显示简短说明 | |
alias run-help >&/dev/null && unalias run-help | |
autoload run-help | |
#历史命令 top10 | |
alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10' | |
#}}} | |
#路径别名 {{{ | |
#进入相应的路径时只要 cd ~xxx | |
hash -d D="/home/kleist/Documents" | |
hash -d W="/home/kleist/workspace" | |
#}}} | |
#{{{自定义补全 | |
#补全 ping | |
zstyle ':completion:*:ping:*' hosts 192.168.1.{1,50,51,100,101} www.google.com | |
#补全 ssh scp sftp 等 | |
zstyle -e ':completion::*:*:*:hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })' | |
#}}} | |
#{{{ F1 计算器 | |
arith-eval-echo() { | |
LBUFFER="${LBUFFER}echo \$(( " | |
RBUFFER=" ))$RBUFFER" | |
} | |
zle -N arith-eval-echo | |
bindkey "^[[11~" arith-eval-echo | |
#}}} | |
function timeconv { date -d @$1 +"%Y-%m-%d %T" } | |
zmodload zsh/mathfunc | |
autoload -U zsh-mime-setup | |
zsh-mime-setup | |
setopt EXTENDED_GLOB | |
setopt correctall | |
autoload compinstall | |
export EDITOR="vim" | |
cdl() { | |
if [ -n $1 ] ; then | |
cd $1 | |
pwd | |
else | |
cd | |
pwd | |
fi | |
} | |
#alias cd=cdl | |
# | |
# alias | |
alias ..='cd ..' | |
alias ...='cd ../../' | |
alias ....='cd ../../../' | |
alias .....='cd ../../../../' | |
alias ......='cd ../../../../../' | |
# for cheat | |
export CHEATCOLORS=true | |
export DOCKER_HOST=tcp://192.168.59.103:2376 | |
export DOCKER_CERT_PATH=/Users/kleist/.boot2docker/certs/boot2docker-vm | |
export DOCKER_TLS_VERIFY=1 | |
# JAVA | |
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7` | |
export JAVA8_HOME=`/usr/libexec/java_home -v 1.8` | |
alias fuck='eval $(thefuck $(fc -ln -1 | tail -n 1)); fc -R' | |
export STUDIO_JDK=/Applications/IntelliJ\ IDEA\ 15\ CE.app/Contents/jre/jdk | |
launchctl setenv STUDIO_JDK /Applications/IntelliJ\ IDEA\ 15\ CE.app/Contents/jre/jdk | |
export PATH="/usr/local/sbin:/usr/local/bin:/Users/kleist/code/AndroidSDK/sdk/platform-tools:$PATH" | |
export HOMEBREW_BOTTLE_DOMAIN=http://7xkcej.dl1.z0.glb.clouddn.com | |
export THEFUCK_RULES=DEFAULT_RULES:gradle | |
alias aria2rpc='aria2c --conf-path=/Users/kleist/.config/aria/aria2.conf -D' | |
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! | |
export SDKMAN_DIR="/Users/kleist/.sdkman" | |
[[ -s "/Users/kleist/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/kleist/.sdkman/bin/sdkman-init.sh" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment