zshrc

注意

この記事はobsoleteです。あたらしいzshrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。

 

一回じゃ入らんからエントリ分けるよ・・・

 

.zshrc

 

#

# kcrt’s .zshrc file for Fedora/Debian

# Written by kcrt <kcrt__atmark__kcrt.net>

# Nanoseconds Hunter “http://www.kcrt.net

# Id: $Id$

#

# —– とりあえず

stop

# ^Sとかを無効にする。

# —– 色宣言

typeset

typeset

=(

)

=(

001100

001111

001111

110000)

=

if[[$hostcolors[$HOST]=“”]];then

=

=“000000”

else

=$hostcolors[$HOST]

=$hostblacks[$HOST]

fi

export

export

# —– xterm(screen上以外での起動)だと思われる

if[[$TERM==“xterm”]];then

# 色の個別設定 – うまく動かない端末もあります

echo-n“^[]R”# first, reset the palette

echo-n“^[]P0$hostblack# black

echo-n“^[]P1FF0000″# red

echo-n“^[]P200CC00″# green

echo-n“^[]P3CCCC00″# yellow

echo-n“^[]P45555FF”# blue

echo-n“^[]P5FF00FF”# magenta

echo-n“^[]P600FFFF”# cyan

echo-n“^[]P7CCCCCC”# white

echo-n“^[]P8888888″# BLACK

echo-n“^[]P9FFAAAA”# RED

echo-n“^[]PA88FF88″# GREEN

echo-n“^[]PBFFFFAA”# YELLOW

echo-n“^[]PC7777FF”# BLUE

echo-n“^[]PDFFCCFF”# MAGENTA

echo-n“^[]PE88FFFF”# CYAN

echo-n“^[]PFEEEEEE”# WHITE

# タイトルバーの文字列

if[[$SSH_CONNECTION!=“”]];then

# ssh接続

=echo -n $SSH_CONNECTION | sed -e 's/¥(.*¥) .* ¥(.*¥) .*/¥1 --> ¥2/g'

echo“^[]2;$HOST($tmpTitle, ssh)¥a

elif[[$REMOTEHOST!=“”]];then

# おそらくtelnet

echo-n“^[]2;$REMOTEHOST –> $HOST¥a;

else

# ローカルと見た

echo-n“^[]2;$HOST(local)¥a

fi

fi

# —– 環境変数

export

=“vim”# やっぱりvimだねっ

export

=“tty”

# —– 色関係

autoload

# $color[red]とかが使えるようになる。

evaldircolors -b

‘:completion:*’

${(s.:.)LS_COLORS}# 補完も色つける

# —– autoloadたち

autoload

-u

autoload

autoload

autoload

# 設定はNOを頭につけると逆の意味になるよ!

# —– 補完

LISTMAX=200# 表示する最大補完リスト数

setopt

# 曖昧な補完で自動的にリスト表示

setopt

# 一回目の補完で候補を挿入(cf. auto_menu)

setopt

# 二回目の補完で候補を挿入

setopt

# (?) –include=/usr.. などの=補完を有効に

setopt

#

:よくわからない

setopt

# 補完候補をできるだけつめて表示する

setopt

# 補完候補表示時にビープ音を鳴らす

setopt

# ファイル名のおしりに識別マークをつける

# —– 履歴

HISTFILE=$HOME/.zhistory”# 履歴保存先

HISTSIZE=1000# 使用する履歴数

SAVEHIST=1000# 保存する履歴数

setopt

# スペースで始まるコマンドを記録しない

setopt

# 重複した履歴を記録しない

setopt

# ターミナル間の履歴を共有する

setopt

# 履歴を追記する

# —– ファイル操作関連

setopt

# ディレクトリ名でcd

setopt

# 不要なスラッシュをはずす

setopt

# 自動的にpushd

setopt

# 重複したディレクトリスタックを記録しない

setopt

# コマンドのスペル補正

setopt

# コマンド以外もスペル補正

setopt

# =zshとかが置換される

setopt

# 拡張グロブ有効

# —– そのほかの設定

setopt

# 8ビット文字表示

setopt

# プロンプトでのコマンド置換などを有効に

setopt

# エラー時にはBeep音

setopt

# viが一番!

setopt

# ^S/^Qを有効に

# —– プロンプト

# PROMPT=’%{^[[%(!.31.32)m%}[%n@%m]%# %{^[[m%}’

PROMPT=‘%{%(!.$fg[red].$fg[$hostcolor])%}[%n@%m]%# %{$reset_color%}’

# 最後に実行したプログラムがエラーだと反転するよ。

RPROMPT=‘ %{%(?.$fg[cyan].$bg[cyan]$fg[black])%} [%~] %{$reset_color%}’

# —– キー

bindkey

bindkey‘^z’

bindkey‘^y’

bindkey‘^[[A’

bindkey‘^[[B’

# —– 自分用関数

{

# モードの切り替え時に右上にモードを表示

integer

integer

integer

=

(echo-n$1|

)

=

[COLUMNS

$StrLength]# 場所はお好みで

=1

echo-n“^[[s”# push pos

echo-n“^[[$[$Cursor_Y];$[$Cursor_X]H”# set pos

echo-n“^[[07;37m$1^[[m”# print

echo-n“^[[u”# pop pos

}

# viins <-> vicmd {{{

{

“– NORMAL –“

builtin

}

{

“– INSERT –“

builtin

}

{

“– INSERT –“

builtin

}

{

“– INSERT –“

builtin

}

{

“– INSERT –“

builtin

}

{

“– INSERT –“

builtin

}

bindkey

“^[“

bindkey

“i”

bindkey

“I”

bindkey

“a”

bindkey

“A”

bindkey

“c”

bindkey

“/”

bindkey

“^P”

bindkey

“^N”

# vi-repeat-search

bindkey“^Q”

# }}}

# —– 関数

function

{

$1

if[[$1==“”]];then

else

$@

fi

$SHELL

}

function

{

$1=(

$1)

}

{

$1=(

$1)

}

function

{

if[$#=0];then

command

return1

fi

if[

-d

];then

echo“ERROR : ~/.trash not found!”

return1

fi

$@

||return

if[$#=1];then

echo‘$1’ was moved into trash!”

else

echo$# files were moved into trash!”

fi

}

# —– エイリアス

# コマンド置き換え

alias

=‘vim -p’

alias

=‘trash’

alias

=‘_w3m’

# 引数

alias

=‘ls -F –color=tty’

alias

=‘du –human-readable -s ./*’

alias

=‘df –human-readable’

alias

=‘grep –color -a’

alias

=‘less –ignore-case –status-column –prompt=”?f%f:(stdin).?m(%i/%m files?x, next %x.). ?c<-
%c-> .?e(END):%lt-%lb./%Llines” –hilite-unread –tabs=4 –window=-5’

alias

=‘pstree -p’

alias

=‘cal -3’

alias

=‘noglob zmv -W’

alias

=‘noglob zmv -C’

alias

=‘noglob zmv -L’

# 省略とか

alias

=‘ls -F -a –color=tty’

alias

=‘ls -F -la –color=tty –sort=time –reverse’

alias

=‘history’

alias

=‘exit’

alias

=‘su -s =zsh’

alias

=‘od -Ax -tx1z -v’

alias

=‘print “¥a”‘

alias

=‘clear’

alias

=‘cd ../..’

alias

=‘cd ../../..’

alias

=‘cd ../../../..’

alias

=‘ssh kuro’

if[[-x

]];then

alias

=‘w3mman’

fi

# —– suffix alias (関連づけ)

alias-s

=‘cat’

alias-s

=‘tail -f -n20’

alias-s

=‘w3m’

function

{

=(

$1)

}

alias-s

=‘viewxls’

# —– root用の設定

if[[$USER!=‘root’]];then

alias

=“sudo updatedb; beep”

alias

=‘sudo tail -f -n20 /var/log/syslog’

# Fedoraはデフォルトで設定されてない

‘:completion:*:sudo:*’command

path

local

exportPATH=$PATH

local

fi

# —– Abstraction (予定)

alias

suspend=“sudo /usr/sbin/pm-suspend”

alias

=“sudo /usr/sbin/pm-hibernate”

if[[-x

]];then

alias

=“sudo yum update”

alias

=“sudo yum install”

elif[[-x

]];then

alias

=“sudo aptitude update; sudo aptitude upgrade”

alias

=“sudo aptitude install”

alias

=“”

alias

=“sudo aptitude show”

fi

# —– cygwin 固有設定

if[[$OSTYPE=

]];then

alias

=“updatedb –prunepaths=‘/cygdrive’

alias

=‘cmd /c start ‘

alias

=‘explorer . &’

fi

# —– screen 使うことにしたよ

if[[-x

]];then

function

{

# 1 : 普通の起動

# 2 : screen上 -> TERM = “screen”

# 3 : ssh または screen上でのssh -> SSH_CLIENTが空でない

# 4 : ssh上でのscreen -> SSH_CLIENTが空でない かつ STYが空でない

# rootの場合**を付ける

if[[$USER==“root”]];then

1=“*$1*”

fi

if[[-n$SSH_CLIENT]];then

if[[-n$STY]];then

# 4 : ssh上でのscreen

else

# 3 : ssh または screen上でのssh

# マシン名を付け加える