-
Notifications
You must be signed in to change notification settings - Fork 1
/
zshrc
178 lines (134 loc) · 5.52 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
#------------------------------------------------------------
# General
#------------------------------------------------------------
export ZSH_HOME=~/.dotfiles/zsh
export EDITOR=nvim
export LANG=ja_JP.UTF-8
export LESSCHARSET=utf-8
export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
setopt notify # background プロセスの状態変化を即時通知
setopt no_beep # ビープ音停止
setopt ignoreeof # ^d によるログアウト抑止
setopt no_flow_control # ^s, ^q によるのロック&解除を抑止
unsetopt promptcr # 末尾に改行がない出力を表示
# 単語の一部として扱われる文字。
# デフォルトから除外: `/`
# デフォルトに追加: `|`
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>|'
#------------------------------------------------------------
# zplug (Prep)
#------------------------------------------------------------
export ZPLUG_HOME=~/.zplug
if [[ ! -d ~/.zplug ]];then
git clone https://github.com/zplug/zplug $ZPLUG_HOME
fi
source $ZPLUG_HOME/init.zsh
zplug 'zplug/zplug', hook-build:'zplug --self-manage'
#------------------------------------------------------------
# rtakasuke Plugins
#------------------------------------------------------------
zplug "rtakasuke/zsh-duration", lazy:true
zplug "rtakasuke/zsh-smart-man", lazy:true
#------------------------------------------------------------
# Keybindings & Alias
#------------------------------------------------------------
bindkey -d
bindkey -e
bindkey "^U" backward-kill-line
# git リポジトリのルートに cd できる
zplug "mollifier/cd-gitroot", lazy:true
alias cg='cd-gitroot'
if type "exa" > /dev/null 2>&1; then
alias ls='exa'
alias ll='exa -l --git'
alias la='exa -la --git'
fi
if type "glances" > /dev/null 2>&1; then
alias top='glances'
fi
alias cd='pushd > /dev/null'
alias cdh='cd ~'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias vim='nvim'
alias vimdiff='nvim -d'
alias diff='colordiff'
alias hist='history'
alias dk='docker'
alias dkc='docker-compose'
#------------------------------------------------------------
# Appearance
#------------------------------------------------------------
# shell でシンタックスハイライト
zplug "zsh-users/zsh-syntax-highlighting", defer:2, lazy:true
# 色強化
zplug "chrissicool/zsh-256color", lazy:true
autoload -Uz colors; colors
# Prompt
source ${ZSH_HOME}/prompt.zsh
#------------------------------------------------------------
# Completion
#------------------------------------------------------------
zplug "zsh-users/zsh-completions", lazy:true
zplug "greymd/docker-zsh-completion", lazy:true
autoload -U compinit
setopt auto_cd # ディレクトリ名のみで移動
setopt auto_list # 補完候補を一覧表示
setopt auto_menu # tab連打
setopt auto_param_slash # ディレクトリ名の補完で末尾に '/' を付与
setopt complete_in_word # 単語の途中での Tab 補完
setopt correct # コマンドのスペル訂正を提案
setopt extended_glob # glob 展開
setopt globdots # ドットファイルも候補に入る
setopt list_types # ls -F
setopt list_packed # リストをできるだけ詰める
setopt magic_equal_subst # '=' より先も補完
setopt mark_dirs # ファイル名展開でディレクトリ末尾に '/' を付与
setopt pushd_ignore_dups # ディレクトリスタックに重複する物は古い方を削除
zstyle ':completion::complete:*' use-cache true
zstyle ':completion:*:default' menu select=1
# 大文字&小文字、ハイフン&アンスコを区別せずに補完
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z} m:[-_]=[-_]'
# kubernetes
[[ /usr/local/bin/kubectl ]] && source <(kubectl completion zsh)
[[ /usr/local/bin/minikube ]] && source <(minikube completion zsh)
#------------------------------------------------------------
# History Search
#------------------------------------------------------------
export HISTFILE=${HOME}/.zsh_history
HISTSIZE=10000
SAVEHIST=100000
autoload history-search-end # 履歴検索時のカーソルを末尾に置く
setopt hist_expand # 補完時に履歴を自動的に展開
setopt bang_hist # '!'を使った履歴展開を行う
setopt hist_ignore_dups # 重複した履歴を保持しない
setopt hist_no_store # historyコマンドは履歴に登録しない
setopt hist_reduce_blanks # 余分なスペースを削除
setopt hist_verify # ヒストリを呼び出してから実行する間に一旦編集可能
setopt inc_append_history # シェルの終了を待たずに履歴をファイルに保存
setopt share_history # 他のシェルのヒストリをリアルタイムで共有する
# fzf
if type "fzf" > /dev/null 2>&1; then
source ${ZSH_HOME}/fzf.zsh
fi
#------------------------------------------------------------
# zplug (Post)
#------------------------------------------------------------
# 未インストール項目をインストールする
if [ ! ~/.zplug/last_zshrc_check_time -nt ~/.zshrc ]; then
touch ~/.zplug/last_zshrc_check_time
if ! zplug check --verbose; then
printf "Install? [y/N]: "
if read -q; then
echo; zplug install
fi
fi
fi
zplug load
#------------------------------------------------------------
# zprof
#------------------------------------------------------------
# if (which zprof > /dev/null 2>&1) ;then
# zprof
# fi