-
Notifications
You must be signed in to change notification settings - Fork 1
/
.zshrc
239 lines (175 loc) · 6.17 KB
/
.zshrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# zsh option
#########################################
# colors
autoload -Uz colors
colors
eval $(dircolors ~/.zsh/dircolors.256dark)
if [ -n "$LS_COLORS" ]; then
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
fi
# ビープを鳴らさない
setopt nobeep
# emacs キーバインド
bindkey -e
# サスペンド中のプロセスと同じコマンド名を実行した場合はリジューム
setopt auto_resume
# Ctrl+Dでzshを終了しない
setopt ignore_eof
# display
# autoload -Uz promptinit
# promptinit
# #prompt adam1
setopt prompt_subst
# 右プロンプトを良い感じに消す
setopt transient_rprompt
# 出力の文字列末尾に改行コードが無い場合でも表示
unsetopt promptcr
# 内部コマンド jobs の出力をデフォルトで jobs -l にする
setopt long_list_jobs
# マルチバイト文字表示
setopt print_eight_bit
# ファイル名で #, ~, ^ の 3 文字を正規表現として扱う
setopt extended_glob
# ファイル名の展開で辞書順ではなく数値的にソート
setopt numeric_glob_sort
# history
HISTFILE=$HOME/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
# history search
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
# ヒストリを共有
setopt share_history
# コマンドが入力されるとすぐに追加
setopt inc_append_history
# zsh の開始, 終了時刻をヒストリファイルに書き込む
setopt extended_history
# 補完時に履歴を自動的に展開
setopt hist_expand
# 入力したコマンドが直前のものと同一なら古いコマンドのほうを削除する
setopt hist_save_no_dups
# ラインエディタでヒストリ検索し、ヒットした場合でも重複したものとみなさない
setopt hist_find_no_dups
# 入力したコマンドを履歴に登録する時、同一がすでに存在した場合登録しない
setopt hist_ignore_all_dups
# 関数定義のためのコマンドは履歴から削除する
setopt hist_no_functions
# 履歴参照のコマンドは履歴に登録しない
setopt hist_no_store
# コマンド中の余分な空白を削除する
setopt hist_reduce_blanks
# ヒストリを呼び出してから実行する間に一旦編集
setopt hist_verify
# ディレクトリ名だけでcd
setopt auto_cd
# ディレクトリ名をpush
setopt auto_pushd
# 同じディレクトリをpushしない
setopt pushd_ignore_dups
# auto complete
LISTMAX=1000
autoload -Uz compinit
compinit -C
# 補完候補一覧でファイルの種別をマーク表示
setopt list_types
# 候補を詰めて表示
setopt list_packed
# 補完候補が複数ある時、一回目のTABで一覧表示
setopt auto_list
# 補完候補のカーソル選択を有効に
zstyle ':completion:*:default' menu select=1
# TAB で順に補完候補を切り替える
setopt auto_menu
# --prefix=/usr などの = 以降も補完
setopt magic_equal_subst
# =command を command のパス名に展開する
setopt equals
# コマンド補正
setopt correct
# 大文字小文字無視
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
if [ `whoami` = root ];then
PROMPT="[%{${fg[red]}%}%B%n@%m%b]%#%{${reset_color}%} "
else
PROMPT="[%{${fg[green]}%}%B%n@%m%b]%#%{${reset_color}%} "
fi
# display git branch
autoload -Uz vcs_info
# zstyle ':vcs_info:git:*' check-for-changes true
# zstyle ':vcs_info:git:*' stagedstr "+"
# zstyle ':vcs_info:git:*' unstagedstr "-"
# zstyle ':vcs_info:*' formats '(%s)%c%u%b'
# zstyle ':vcs_info:*' actionformats '(%s)%c%u%b|%a'
zstyle ':vcs_info:*' formats '(%s)%b'
zstyle ':vcs_info:*' actionformats '(%s)%b|%a'
precmd () {
psvar=()
LANG=en_US.UTF-8 vcs_info
[[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
RPROMPT="["%1(v|%F{green}%1v%f|)"] [%{${fg[yellow]}%}%B%T%b%{${reset_color}%}] [%{${fg[cyan]}%}%B%/%b%{${reset_color}%}]"
SPROMPT="%{${fg[red]}%}Maybe you want to type this command? %{${reset_color}%}> '%r' [%BY%bes %BN%bo %BA%bbort %BE%bdit] "
# alias
#########################################
alias grep='grep --color'
alias lv='lv -c'
alias g='git'
alias gs='git status -sb'
alias gl='git log --graph --decorate --name-status'
alias gg='git grep'
alias gd='git diff'
alias ga='git add'
alias be='bundle exec'
alias rs='bundle exec rails server'
alias rc='bundle exec rails console'
alias rdm='bundle exec rake db:migrate'
alias rdms='bundle exec rake db:migrate && bundle exec rake db:seed'
alias rdmr='bundle exec rake db:migrate:reset'
alias rdmrs='bundle exec rake db:migrate:reset && bundle exec rake db:seed'
alias dcr='docker-compose run'
alias dce='docker-compose exec'
if [ `uname` = Darwin ]; then
alias brew_cask_upgrade='for c in `brew cask list`; do ! brew cask info $c | grep -qF "Not installed" || brew cask install $c; done'
if which gls > /dev/null; then
alias ll='gls -la --color'
else
alias ll='ls -laG'
fi
# macvim-kaoriya
if [ -f ~/Applications/MacVim.app/Contents/MacOS/Vim ]; then
alias vi='env LANG=ja_JP.UTF-8 ~/Applications/MacVim.app/Contents/MacOS/Vim "$@"'
alias vim='env LANG=ja_JP.UTF-8 ~/Applications/MacVim.app/Contents/MacOS/Vim "$@"'
fi
else
alias ll='ls -la --color'
fi
# other setting
#########################################
fpath=(~/.zsh /usr/local/share/zsh-completions /usr/local/share/zsh/site-functions $fpath)
if [ -f /usr/local/share/zsh/site-functions/_aws ]; then
source /usr/local/share/zsh/site-functions/_aws #なぜかfpathだけだと読まれない
fi
if [ -d ~/.zsh/zsh-notify ]; then
source ~/.zsh/zsh-notify/notify.plugin.zsh
fi
# if [ `uname` = Darwin ]; then
# # iterm shell integration
# test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
# fi
# direnv
if which direnv > /dev/null; then
# eval "$(direnv hook $0)"
eval "$(direnv hook $SHELL)"
fi
# anyenv
if [ -d $HOME/.anyenv ]; then
# export PATH="$HOME/.anyenv/bin:$PATH"
eval "$($HOME/.anyenv/bin/anyenv init - --no-rehash)"
fi
# if (which zprof > /dev/null) ;then
# zprof | less
# fi