# ~/binをPATHに追加する #PATH=~/bin:$PATH #export PATH # alias #alias ls='ls -F --color=auto' alias ls='ls -FG' #alias ll='ls -la --color=auto' alias ll='ls -laG' #alias la='ls -a --color=auto' alias la='ls -aG' alias eng='LANG=C LANGUAGE=C LC_ALL=C' alias tree='tree -NC' # source-hightlight function lessh() { src-hilite-lesspipe.sh $1 | less -R } # user file-creation mask umask 022 ## キーバインド # Emacs風キーバインド #bindkey -e # Vi風キーバインド bindkey -v ## プロンプト local C_ROOT="%{[31m%}" # 31: red local C_LOCAL="%{[36m%}" # 36: cyan local C_REMOTE="%{[35m%}" # 35: magenta local C_RESET="%{[m%}" case ${UID} in 0) PROMPT="${C_ROOT}%n@%m(%h%)${C_RESET}# " PROMPT2="%_> " RPROMPT="[%~]" SPROMPT="%r is correct? [n,y,a,e]: " [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && PROMPT="${C_ROOT}%n@%B%m%b(%h%)${C_RESET}# " ;; *) PROMPT="${C_LOCAL}%n(%h%)${C_RESET}%% " PROMPT2="%_> " RPROMPT="[%~]" SPROMPT="%r is correct? [n,y,a,e]: " [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && PROMPT="${C_REMOTE}%n@%B%m%b(%h%)${C_RESET}%% " ;; esac # コマンド実行後は右プロンプトを消す setopt transient_rprompt ## タイトルバーに各種情報を表示 case "${TERM}" in kterm*|xterm) precmd() { echo -ne "\033]0;${LOGNAME}@${HOST%%.*}:${PWD}\007" } ;; esac ## 補完 autoload -U compinit compinit # ディレクトリ名を入力するだけで移動 #setopt auto_cd # 自動でpushd setopt auto_pushd # 重複するディレクトリはpushdしない setopt pushd_ignore_dups # 存在しないコマンド入力時に修正を提案 setopt correct # 補完候補リストを詰めて表示 setopt list_packed # 補完候補リスト表示時にビープ音を鳴らさない setopt nolistbeep ## 履歴 # 履歴ファイル HISTFILE=~/.zsh_history # メモリに保存する履歴の数 HISTSIZE=100000 # ファイルに保存する履歴の数 SAVEHIST=100000 # 同じコマンドを保存対象外とする setopt hist_ignore_dups # 複数のシェル間で履歴を共有する setopt share_history # historyコマンド自体は履歴に追加しない setopt hist_no_store # 余分な空白を除去して履歴に追加する setopt hist_reduce_blanks # スペースではじめたコマンドは履歴に追加しない #setopt hist_ignore_space # 直前と同じコマンドはヒストリに追加しない setopt hist_ignore_dups # 履歴検索機能 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 "^P" history-beginning-search-backward-end bindkey "^N" history-beginning-search-forward-end ## Zshの挙動 # パスの最後に付けたスラッシュを勝手に除去させない setopt noautoremoveslash # aliasの場合もaliasを展開して補完対象を探したりする setopt complete_aliases # ~/.zshrc.localが存在すれば読み込む [ -f ~/.zshrc.local ] && source ~/.zshrc.local #function zle-line-init zle-keymap-select { # VIM_NORMAL="%K{208}%F{black}⮀%k%f%K{208}%F{white} % NORMAL %k%f%K{black}%F{208}⮀%k%f" # VIM_INSERT="%K{075}%F{black}⮀%k%f%K{075}%F{white} % INSERT %k%f%K{black}%F{075}⮀%k%f" # RPS1="${${KEYMAP/vicmd/$VIM_NORMAL}/(main|viins)/$VIM_INSERT}" # RPS2=$RPS1 # zle reset-prompt #} #zle -N zle-line-init #zle -N zle-keymap-select function zle-line-init zle-keymap-select { vimode="${${KEYMAP/vicmd/NORMAL}/(main|viins)/INSERT}" # update status line if [ -n "$TMUX" ]; then # tmux if [ $vimode = "NORMAL" ]; then statbg="colour236" statfg="colour247" statl1bg="colour240" statl1fg="colour231" statl2bg="colour148" statl2fg="colour22" statr1bg="colour240" statr1fg="colour247" statr2bg="colour252" statr2fg="colour236" else statbg="colour24" statfg="colour117" statl1bg="colour31" statl1fg="colour231" statl2bg="colour231" statl2fg="colour23" statr1bg="colour31" statr1fg="colour117" statr2bg="colour117" statr2fg="colour23" fi tmux set -g status-bg ${statbg} > /dev/null tmux set -g status-fg ${statfg} > /dev/null statl1="#[bg=${statl1bg}, fg=${statl1fg}] #H " statl1a="#[bg=${statbg}, fg=${statl1bg}]⮀" statl2="#[bg=${statl2bg}, fg=${statl2fg}] $vimode " statl2a="#[bg=${statl1bg}, fg=${statl2bg}]⮀" tmux set -g status-left "${statl2}${statl2a}${statl1}${statl1a}" > /dev/null statr1="#[bg=${statr1bg}, fg=${statr1fg}] #($HOME/.battery) " statr1a="#[bg=${statbg}, fg=${statr1bg}]⮂" statr2="#[bg=${statr2bg}, fg=${statr2fg}] %Y-%m-%d(%a) %H:%M " statr2a="#[bg=${statr1bg}, fg=${statr2bg}]⮂" tmux set -g status-right "${statr1a}${statr1}${statr2a}${statr2}" > /dev/null else # zsh showmode $vimode fi } if [ "$TMUX" != "" ]; then zle -N zle-line-init zle -N zle-keymap-select fi function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi # peco --query $LBUFFER 直前の文字列を初期値にし検索する # awk '!a[$0]++' 連想配列を利用し重複を高速に削除する # awk は一行づつ処理を行う ($0 はその行全体) BUFFER=$(history -n 1 | eval $tac | awk '!a[$0]++' | peco --prompt '(*´⊿`)⊃' --query "$LBUFFER") # カーソルを行末に移動する # 変数名の前に # を付けることで変数の文字数をカウントする CURSOR=$#BUFFER #zle clear-screen } zle -N peco-select-history bindkey '^r' peco-select-history function ls-peco() { FILTERD_LS=$(ls | peco) BUFFER=${BUFFER}${FILTERD_LS} CURSOR=$#BUFFER } function peco-process-kill() { for pid in `ps aux | peco --prompt 'KILL!>' | awk '{print $2}'` do kill $pid echo "Killed ${pid}" done } alias kill-peco="peco-process-kill"