Last active
September 29, 2022 02:24
-
-
Save sluchin/b4aa98dfa15a3edfa4acb6f60448d806 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
# .zshrc | |
[[ -f $HOME/.zshenv ]] && source $HOME/.zshenv | |
stty stop undef | |
bindkey -e | |
# autoload | |
autoload -Uz run-help | |
autoload -Uz zmv | |
autoload -Uz select-word-style | |
select-word-style default | |
## コマンド履歴関連 | |
HISTFILE=~/.zhistory | |
HISTTIMEFORMAT='%F %T ' | |
HISTSIZE=100000 | |
SAVEHIST=100000 | |
#HISTCONTROL=ignoredups:ignorespace | |
#HISTIGNORE=ls:pwd | |
export HISTFILE HISTTIMEFORMAT HISTSIZE SAVEHIST | |
export HISTCONTROL HISTIGNORE | |
fc -R $HISTFILE | |
setopt auto_cd | |
setopt auto_pushd | |
setopt pushd_ignore_dups | |
setopt extended_history # timestamp を含めた形式の履歴の形式にする | |
setopt hist_expire_dups_first # 履歴上限に達したら重複排除を実施する | |
setopt hist_find_no_dups # line editor モードで重複した履歴の表示を行わない | |
#setopt hist_ignore_all_dups # 全ての重複を排除する | |
setopt hist_ignore_dups # 直前と被る重複を排除する | |
setopt hist_ignore_space # 先頭スペースの場合は履歴に含めない | |
setopt hist_save_no_dups # 履歴ファイルに書き込む際,新しいものと重複する古いコマンドを削除する | |
setopt hist_verify # 履歴を参照したコマンドを直接実行しない | |
setopt share_history # コマンドが(履歴から)読み込まれると同時に履歴ファイルに書き込みを行う | |
setopt hist_no_store # history コマンドは履歴に含めない | |
setopt hist_reduce_blanks # 余分なスペースを削除する | |
setopt hist_lex_words # 空白の取扱を通常のシェルと同様にする | |
setopt inc_append_history # すぐにヒストリファイルに追記する | |
## プロンプト関連 | |
autoload -Uz colors | |
colors | |
# git-prompt | |
[[ -f $HOME/.zsh.d/git-prompt.sh ]] && source $HOME/.zsh.d/git-prompt.sh | |
# プロンプトのオプション表示設定 | |
GIT_PS1_SHOWDIRTYSTATE=true | |
GIT_PS1_SHOWUNTRACKEDFILES=true | |
GIT_PS1_SHOWSTASHSTATE=true | |
GIT_PS1_SHOWUPSTREAM=auto | |
# プロンプトの表示設定 | |
setopt prompt_subst | |
#TMOUT=1 | |
#TRAPALRM() {zle reset-prompt} | |
PROMPT='%F{yellow}%n@%m%f: %F{yellow}%~%f %F{red}%f | |
\$ ' | |
RPROMPT='%F{cyan}$(__git_ps1 "[%s]")%f%F{white} %*%f (%(?:%{$fg_bold[green]%}%?:%{$fg_bold[red]%}%?)%{${reset_color}%})' | |
## 補完機能 | |
zstyle ':completion:*:*:git:*' script ~/.git-completion.bash | |
# `compinit` scans $fpath, so do this before calling it. | |
fpath=(~/.zsh.d/functions $fpath) | |
autoload -Uz compinit && compinit | |
autoload -U colors && colors | |
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 "${LS_COLORS}" | |
alias ls="ls -F --color=auto" | |
# 単語の入力途中でもTab補完を有効化 | |
setopt complete_in_word | |
# 補完候補をハイライト | |
zstyle ':completion:*:default' menu select=1 | |
# キャッシュの利用による補完の高速化 | |
zstyle ':completion::complete:*' use-cache true | |
# 大文字、小文字を区別せず補完する | |
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' | |
# 補完リストの表示間隔を狭くする | |
setopt list_packed | |
# コマンドの打ち間違いを指摘してくれる | |
setopt correct | |
SPROMPT="correct: $RED%R$DEFAULT -> $GREEN%r$DEFAULT ? [Yes/No/Abort/Edit] => " | |
## ディレクトリ移動関連 | |
# cdr | |
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook | |
add-zsh-hook chpwd chpwd_recent_dirs | |
if type peco >/dev/null 2>&1; then | |
function peco-buffer() | |
{ | |
BUFFER=$(eval ${BUFFER} | peco) | |
CURSOR=0 | |
} | |
zle -N peco-buffer | |
bindkey '^p' peco-buffer | |
function peco-history() | |
{ | |
local tac | |
if type tac > /dev/null 2>&1; then | |
tac="tac" | |
else | |
tac="tail -r" | |
fi | |
BUFFER=$(\history -n 1 | egrep -v "^cd" | eval $tac | \ | |
peco --prompt="history >" --query "$LBUFFER") | |
CURSOR=$#BUFFER | |
zle clear-screen | |
} | |
zle -N peco-history | |
bindkey '^r' peco-history | |
function peco-cdr () | |
{ | |
local dir=$(cdr -l | sed 's/^[0-9]\+ \+//' | \ | |
peco --prompt="cdr >" --query "$LBUFFER") | |
if [ -n "$dir" ]; then | |
BUFFER="cd ${dir}" | |
zle accept-line | |
fi | |
} | |
zle -N peco-cdr | |
bindkey '^s' peco-cdr | |
MAXDEPTH="" | |
function peco-path() | |
{ | |
if [[ -n $RBUFFER ]]; then | |
(( CURSOR++ )) | |
return 0; | |
fi | |
local filepath=$(find . -maxdepth ${MAXDEPTH:-5} | \ | |
grep -v '/\.' | peco --prompt 'path >' --query "$LBUFFER") | |
if [ -n "$filepath" ]; then | |
if [ -d "$filepath" ]; then | |
BUFFER+="cd '$filepath'" | |
elif [ -f "$filepath" ]; then | |
BUFFER="emacsclient '$filepath'" | |
fi | |
zle accept-line | |
else | |
return 1 | |
fi | |
CURSOR=$#BUFFER | |
} | |
zle -N peco-path | |
bindkey '^f' peco-path | |
function peco-kill() | |
{ | |
local pid=$(ps aux --sort=-pid | peco --prompt 'kill >' | awk '{ print $2 }') | |
if [ ${#pid} -ne 0 ]; then | |
kill "$@" $pid | |
echo "kill $@ ${pid}" | |
fi | |
} | |
zle -N peco-kill | |
alias pk="peco-kill" | |
alias pkill="peco-kill" | |
function peco-grep() { | |
res=$(grep --color=never "$@" | \ | |
peco --prompt 'grep >' | \ | |
awk -F: '{ print $2" "$1 }') | |
if [ ${#res} -ne 0 ]; then | |
local file=$(echo $res | awk -F" " '{ print $2 }') | |
local nu=$(echo $res | awk -F" " '{ print $1 }') | |
emacsclient +${nu:=0} ${file} | |
echo "emacsclient +${nu} ${file}" | |
fi | |
} | |
zle -N peco-grep | |
alias pg="peco-grep" | |
alias pgrep="peco-grep" | |
fi | |
## shell options | |
setopt auto_cd # ディレクトリ名の入力のみで移動する | |
setopt auto_remove_slash # スラッシュの削除 | |
setopt auto_pushd # cd -[TAB] でこれまでに移動したディレクトリ一覧を表示 | |
setopt auto_name_dirs # 代入直後から名前付きディレクトリにする | |
setopt auto_menu # 補完キー連打で補完候補を順に表示する | |
setopt cdable_vars # チルダ省略 | |
setopt pushd_to_home # 引数なし pushd で $HOME に戻る(直前 dir へは cd - で) | |
setopt pushd_ignore_dups # ディレクトリスタックに重複する物は古い方を削除 | |
setopt list_packed # 補完候補リストを詰めて表示 | |
setopt list_types # 補完候補にファイルの種類も表示する | |
setopt print_eight_bit # 補完候補リストの日本語を適正表示 | |
setopt no_clobber # 上書きリダイレクトの禁止 | |
setopt no_hup # logout 時にバックグラウンドジョブを kill しない | |
setopt no_beep # コマンド入力エラーで BEEP を鳴らさない | |
setopt glob_complete # glob を展開しないで候補の一覧から補完する | |
setopt extended_glob # 拡張グロブ | |
setopt numeric_glob_sort # 数字を数値と解釈して昇順ソートで出力 | |
setopt prompt_subst # PROMPT 変数を変数展開 | |
setopt interactive_comments # コマンド入力中のコメントを認める | |
setopt always_last_prompt # 元のプロンプロに留まる | |
setopt complete_aliases # エイリアスには別の補完規則を適用する | |
setopt notify # バックグラウンドジョブの状態変化を即時報告する | |
setopt globdots # 明確なドットの指定なしで.から始まるファイルをマッチ | |
setopt check_jobs # ジョブが残っているとき警告を出す | |
setopt auto_param_keys # カッコの対応などを自動的に補完 | |
setopt complete_in_word # 語の途中でもカーソル位置で補完 | |
setopt long_list_jobs # jobs でプロセスID も出力する | |
setopt magic_equal_subst # = 以降も補完する(--prefix=/usr など) | |
unsetopt auto_param_keys # 変数名の後ろに空白を挿入 | |
unsetopt auto_param_slash # ディレクトリの後ろスラッシュを挿入 | |
unsetopt sh_word_split # クオートしていない変数を単語分割する | |
## alias | |
alias vi="vim -u $HOME/.vimrc" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Updated