Repository navigation
Expand file tree
/
Copy pathzshrc
More file actions
249 lines (216 loc) · 5.73 KB
/
Copy pathzshrc
File metadata and controls
249 lines (216 loc) · 5.73 KB
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
240
241
242
243
244
245
246
247
248
249
# envに書けないpath設定
echo "read dotfiles/zshrc"
source "$(dirname $0)/zsh/show_version.zsh"
# PATH
path=(
$HOME/.rbenv/shims(N-/)
$HOME/.rbenv/bin(N-/)
#nodebrew
$HOME/.nodebrew/current/bin(N-/)
$path
)
if which npm >/dev/null 2>&1; then
node_path=(
$(npm root -g)
$node_path
)
fi
export NODE_PATH
# autoload
# -z でzsh-styleで関数をload
# -U エイリアス展開をしない
#補完機能強化
autoload -U compinit
#警告なしにすべての発見したファイルを使用
compinit -u
#色設定
autoload -U colors
colors
# zmv
autoload -U zmv
#add-zsh-hook
#イベント時に関数を複数定義できる
autoload -U add-zsh-hook
# run-help
unalias run-help >/dev/null 2>&1
autoload -Uz run-help
#vcs_info
autoload -Uz vcs_info
#git,hg,svnを有効に
zstyle ':vcs_info:*' enable git hg svn
# gitの変更を確認
zstyle ':vcs_info:git:*' check-for-changes true
#数値処理関数
zmodload zsh/mathfunc
### 履歴 ###
#履歴ファイルが未定義なら
if [ -z "$HISTFILE" ]; then
HISTFILE=$HOME/.zsh_history
fi
#履歴
HISTSIZE=100000
#保存する履歴
SAVEHIST=100000
export HISTFILE HISTSIZE SAVEHIST
#履歴を共有
setopt share_history
#直近のヒストリと同じコマンドならばヒストリに追加しない
setopt hist_ignore_dups
#待機文字列
#PS1="${USER}@%M:%~%(!.#.$)> "
#%(!.#.$):
# %(x.x_is_true.x_is_false)
# !は特権かどうか
# $' 'はprintの引数のように処理する
local p_rhost="%M"
local zle_vi_mode="| |"
if [[ -n "${REMOTEHOST}${SSH_CONNECTION}" ]]; then
p_rhost="%F{yellow}%M%f"
else
p_rhost="%F{green}%M%f"
fi
PROMPT=$'[%~]\n%(!|%F{red}|)%n%(!|%f|)@${p_rhost}${zle_vi_mode}%(!.#.$) > '
# viキーバインドの時モードをPROMPTに出力
# zle-line-initとzle-keymap-selectは特別な名前(zshzle)
function zle-line-init zle-keymap-select {
case $KEYMAP in
vicmd)
zle_vi_mode="|NOR|"
;;
#bindkey -v時はmainとviinsは同じ
main|viins)
zle_vi_mode="|INS|" ;;
command)
zle_vi_mode="|CMD|" ;;
*)
zle_vi_mode="|XXX|" ;;
esac
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
#PROMPT拡張
setopt prompt_subst
#PROMPT内で%文字から始まる置換機能を有効に
setopt prompt_percent
# 右プロンプトに関する設定
#右のプロンプトにvscの情報を表示
function _update_vcs_info_msg(){
#psvar初期化
psvar=()
#$vcs_info_msg_N_に情報代入
vcs_info
[[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
add-zsh-hook precmd _update_vcs_info_msg
# %Nvでpsvar[N]を出力
# %N(x.t.f)の.はtの文字列に含まれなければなんでも良い(%でエスケープできる)
# Nは括弧の直前でも直後でも良い
RPROMPT="%1(v|%1v|)"
#実行後は右プロンプト消去
setopt transient_rprompt
#TABで候補切り替える
setopt auto_menu
#cd時に自動でpush
setopt auto_pushd
#同じディレクトリはpushしない
setopt pushd_ignore_dups
#出力時8bit通す
setopt print_eight_bit
#補完候補を詰めて表示する
setopt list_packed
#=以降も補完
setopt magic_equal_subst
#自動でcd
setopt auto_cd
#間違えていると思われても訂正しない
setopt nocorrect
#曖昧な補完でもビープ音を鳴らさない
setopt nolist_beep
#EOF(^D)を入力されてもログアウトしない
setopt ignore_eof
#シェルエディタにおけるフロー制御を無効に
setopt no_flow_control
# 対話環境でも#以降をコメントに
setopt interactive_comments
#終了時にジョブ確認
setopt checkjobs
#数値でのソート順を1,10,2,20から1,2,10,20へ(数字通りに表示)
setopt numeric_glob_sort
#補完候補をメニューから選択
# :completion:function:completer:command:argument:tag
# らしい (zshcompsysのCONFIGRATIONで検索すれば多分出てくる)
zstyle ':completion:*:default' menu select
# rm以外は*.oを補完候補に出さない
zstyle ':completion:*:*:^(rm):*:*files' ignored-patterns '*.o'
### キー設定 ###
#キーをvim風に
bindkey -v
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "" history-beginning-search-backward-end
bindkey "" history-beginning-search-forward-end
#core生成
ulimit -c unlimited
# vicmd時(-a)にqでpush-line
#qは本来マクロ
bindkey -a 'q' push-line
# run-help
bindkey -a 'K' run-help
#ls
unalias ls >/dev/null 2>&1
if ls --color -d . >/dev/null 2>&1; then
GNU_LS=1
alias ls='ls --color=auto -vCF'
elif ls -G -d . >/dev/null 2>&1; then
BSD_LS=1
alias ls='ls -G -F'
else
SOLARIS_LS=1
fi
#タイトル設定
case "${TERM}" in
kterm*|xterm*)
# xterm control sequences
# OSC
# http://www.xfree86.org/4.7.0/ctlseqs.html
# iTerm2 title FAQ
# https://www.iterm2.com/faq.html
_set_command_title_precmd(){
# nをつけないと改行が出力される
# tab
echo -en "\033];zsh - ready\007"
#window
echo -en "\033]2;zsh - ready\007"
}
_set_command_title_preexec(){
# 引数1に対し末尾を削除(*はすべての文字)
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion
echo -ne "\033];${1%% *}\007"
echo -ne "\033]2;${1%% *}\007"
}
#複数登録
# プロンプト表示直前
# add-zsh-hook precmd _set_command_title_precmd
# Enterを押してコマンドを実行する直前
# add-zsh-hook preexec _set_command_title_preexec
;;
esac
# for neovim
# print OSC 7 to change directory of neovim
function print_osc7() {
printf "\033]7;file://$HOSTNAME/$PWD\033\\"
}
add-zsh-hook -Uz chpwd print_osc7
if [[ ! -z "$VIRTUAL_ENV" ]] ; then
echo "virtualenv"
source "$VIRTUAL_ENV/bin/activate"
fi
if which nvim >/dev/null 2>&1; then
alias vim='nvim'
export EDITOR="nvim"
fi
if which direnv >/dev/null 2>&1; then
eval "$(direnv hook zsh)"
fi