-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.zshrc
439 lines (353 loc) · 11.3 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
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
#
# Executes commands at the start of an interactive session.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
## Source Prezto.
#if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
# source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
#fi
### Added by Zinit's installer
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
[ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)"
[ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
source "${ZINIT_HOME}/zinit.zsh"
#source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust
### End of Zinit's installer chunk
# oh-my-zshのセットアップ
zinit snippet "OMZL::git.zsh"
zinit snippet "OMZP::git"
zinit cdclear -q
# emacsのキーバインド
bindkey -e
# ----------------------------------
# プラグイン
# ----------------------------------
# 256カラー
zplugin light "chrissicool/zsh-256color"
# シンタックスハイライト
zinit light "zdharma/fast-syntax-highlighting"
zinit wait lucid for \
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
"zdharma/fast-syntax-highlighting" \
blockf \
"zsh-users/zsh-completions" \
atload"!_zsh_autosuggest_start" \
"zsh-users/zsh-autosuggestions"
FAST_HIGHLIGHT_STYLES[path]="fg=cyan,underline"
FAST_HIGHLIGHT_STYLES[path-to-dir]="fg=cyan"
FAST_HIGHLIGHT_STYLES[path_pathseparator]="fg=cyan"
# 補完
zinit light "zsh-users/zsh-autosuggestions"
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=5"
# Ctrl+r でコマンド履歴を検索
zinit load "zdharma-continuum/history-search-multi-word"
# ssh connection manager
zinit light "gko/ssh-connect"
# gitリポジトリのrootに移動する
zinit light "mollifier/cd-gitroot"
alias cdu="cd-gitroot"
# ----------------------------------
# シェル設定
# ----------------------------------
# 日本語ファイル名を表示可能にする
setopt print_eight_bit
# ビープを鳴らさない
setopt no_beep
# 色を使う
setopt prompt_subst
# 直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups
# ヒストリの設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000
# 同時に起動したzshの間でヒストリを共有する
setopt share_history
# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space
# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks
# Ctrl+Dでログアウトしないようにする
setopt IGNOREEOF
# 日本語を使用するための設定
export LANG=ja_JP.UTF-8
setopt MULTIOS # Write to multiple descriptors.
setopt EXTENDED_GLOB # Use extended globbing syntax.
# ls 時の色を設定する
export CLICOLOR=true
export LSCOLORS='exfxcxdxbxGxDxabagacad'
export LS_COLORS='di=34:ln=35:so=32p:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'
# 標準エディタを設定する
#export EDITOR=vim
export EDITOR=nvim
# ----------------------------------
# autoload
# ----------------------------------
# フック機能を有効にする
autoload -Uz add-zsh-hook
# URLをエスケープする
autoload -Uz url-quote-magic
# 文字入力時にURLをエスケープする
zle -N self-insert url-quote-magic
# VCS情報の表示を有効にする
autoload -Uz vcs_info
# 色を使用出来るようにする
autoload -Uz colors
colors
# ----------------------------------
# zstyle
# ----------------------------------
# 補完で小文字でも大文字にマッチさせる
zstyle ':completion:*:default' menu select=1 matcher-list 'm:{a-z}={A-Z}'
# ----------------------------------
# パス関連
# ----------------------------------
export PATH="$PATH:/usr/local/bin"
# neovim
export XDG_CONFIG_HOME="$HOME/.config"
# Java
# asdfに依存してJAVA_HOMEを設定
#. ~/.asdf/plugins/java/set-java-home.zsh
# Scala
## Metals
export PATH="$PATH:/Users/cw-tsushi/Library/Application Support/Coursier/bin"
# nodejs
# asdfに依存
export PATH=$HOME/.asdf/shims:$PATH
# Haskell
export PATH="$PATH:$HOME/.local/bin"
# Deno
export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"
# Go
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/workspaces/go
export PATH=$GOPATH/bin:$PATH
# curl は brew で入れたものがあればそちらを使用する
export PATH="/opt/homebrew/opt/curl/bin:$PATH"
# pict
export PATH="$PATH:$HOME/software/pict"
# ----------------------------------
# sbt
# ----------------------------------
export SBT_OPTS="-Xms2048m -Xmx4096m -Xss10M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:ReservedCodeCacheSize=256m -XX:MaxMetaspaceSize=512m"
#----------------------------------
# ls の色付け
# ----------------------------------
export LSCOLORS=exfxcxdxbxegedabagacad
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34'
#alias ls="ls --color"
#----------------------------------
# alias
# ----------------------------------
# 標準
#alias vi='nvim -c "Defx"'
#alias vim='nvim -c "Defx"'
#alias sudovi='sudo nvim -u NONE -c "Defx"'
#alias sudovim='sudo nvim -u NONE -c "Defx"'
alias vi='nvim'
alias vim='nvim'
alias sudovi='sudo nvim -u NONE'
alias sudovim='sudo nvim -u NONE'
alias la='ls -a --color=auto'
alias cls='clear;ls;'
alias ..='cd ..'
alias gr='grep --color'
# git
alias gis='git status'
alias gch='git switch'
alias gt='git difftool'
# Kubernetes
alias kube='kubectl'
# skanehira/docui
alias docui='docker run --rm -itv /var/run/docker.sock:/var/run/docker.sock skanehira/docui'
alias chatwork_oauth='docker run --rm --env-file ~/workspace/rust/chatwork_oauth/.env chatwork_oauth'
# Kindle を見る
# ref: https://yukihane.github.io/docs/ubuntu/kindle-for-pc-ubuntu20.04/
alias kindle_on_wine="wine64 $HOME/.wine/drive_c/Program\ Files\ \(x86\)/Amazon/Kindle/Kindle.exe"
# custom function
alias gl='fshow'
case ${OSTYPE} in
darwin*)
# Mac向けの設定
#
# rmはゴミ箱に送る
# alias rm='rmtrash'
# 開発用のシェル
if [[ -f ~/dotfiles/.zshrc.cw ]]; then
source ~/dotfiles/.zshrc.cw
fi
;;
linux*)
# Linux向けの設定
#
# rmはゴミ箱に送る
alias rm='trash'
# Linuxではxdg-openでブラウザ起動
alias open='xdg-open'
# 開発用のシェル
source ~/dotfiles/.zshrc.lc
;;
esac
# github起動
github() {
open 'https://github.com/'$1
}
# ----------------------------------
# プロンプト
# ----------------------------------
if ! [ $(which starship) ]; then
# starshipが無ければダウンロード
sh -c "$(curl -fsSL https://starship.rs/install.sh)"
fi
# tomlはdotfiles内のファイルを直接参照する
export STARSHIP_CONFIG=~/dotfiles/starship.toml
# ログ出力先
export STARSHIP_CACHE=~/.starship/cache
eval "$(starship init zsh)"
# ----------------------------------
# Ctrl-PとCtrl-Nで前方一致検索
# ----------------------------------
autoload -Uz 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
# ----------------------------------
# Ctrl-^ で cd ..
# ----------------------------------
function cdup() {
echo
cd ..
# prompt_${prompt_theme}_precmd
zle reset-prompt
return 0
}
zle -N cdup
bindkey '^\^' cdup
# ----------------------------------
# fzf
# ----------------------------------
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git"'
export FZF_DEFAULT_OPTS='--height 60% --reverse --border'
# アクセスしたことのあるディレクトリの一覧
function fzf-z-search() {
local res=$(z | sort -rn | cut -c 12- | fzf)
if [ -n "$res" ]; then
BUFFER+="cd $res"
zle accept-line
else
return 1
fi
}
zle -N fzf-z-search
bindkey '^o' fzf-z-search
# Git log をキレイに見せる
fshow() {
local out shas sha q k
while out=$(
git log --graph --color=always \
--format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" |
fzf --ansi --multi --no-sort --reverse --query="$q" \
--print-query --expect=ctrl-d); do
q=$(head -1 <<< "$out")
k=$(head -2 <<< "$out" | tail -1)
shas=$(sed '1,2d;s/^[^a-z0-9]*//;/^$/d' <<< "$out" | awk '{print $1}')
[ -z "$shas" ] && continue
if [ "$k" = ctrl-d ]; then
git diff --color=always $shas | less -R
else
for sha in $shas; do
git show --color=always $sha | less -R
done
fi
done
}
# ----------------------------------
# brew
# ----------------------------------
eval $(/opt/homebrew/bin/brew shellenv)
# ----------------------------------
# z
# ----------------------------------
# 設定読み込み
source ~/z/z.sh
## ----------------------------------
## Python
## ----------------------------------
#export PYENV_ROOT="$HOME/.pyenv"
#export PATH="$PYENV_ROOT/bin:$PATH"
#eval "$(pyenv init -)"
#eval "$(pyenv virtualenv-init -)"
# ----------------------------------
# asdf
# ----------------------------------
#if [ -e $HOME/.asdf/asdf.sh ]; then
# # ファイルがある場合のみ設定
# . $HOME/.asdf/asdf.sh
#fi
# ----------------------------------
# 補完を有効にする
# ----------------------------------
# Docker
if [ ! -e ~/.zsh/completion/_docker ]; then
# ファイルがなければダウンロード
mkdir -p ~/.zsh/completion
curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/zsh/_docker > ~/.zsh/completion/_docker
fi
docker_comp(){
fpath=(~/.zsh/completion $fpath)
}
docker_comp
# Docker-Compose
if [ ! -e ~/.zsh/completion/_docker-compose ]; then
# ファイルがなければダウンロード
mkdir -p ~/.zsh/completion
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
fi
docker_compose_comp(){
fpath=(~/.zsh/completion $fpath)
}
docker_compose_comp
# Kubernetes
kube_comp(){
# 補完スクリプト
source <(kubectl completion zsh)
complete -F __start_kubectl kube
}
# kubectlは頻繁に使わないのに補完設定呼び出しに時間がかかるのでコメントアウト
# 補完がほしければ自分でkube_compを叩くように運用で回避する
#kube_comp
# asdf
asdf_comp(){
fpath=(${ASDF_DIR}/completions $fpath)
}
asdf_comp
# Alacritty
alacritty_comp(){
fpath=(~/.zsh_functions $fpath)
}
alacritty_comp
## 補完機能を有効にする
autoload -Uz compinit && compinit -i
export NVM_DIR="$HOME/.config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
## 起動時にtmuxを起動する
## Alacritty.toml の [shell] で設定できるようになったらいいんだけど...
#if [ $SHLVL = 1 ]; then
# tmux
#fi