注意
この記事はobsoleteです。あたらしいzshrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。
一回じゃ入らんからエントリ分けるよ・・・
.zshrc
1 |
#
1 |
# kcrt’s .zshrc file for Fedora/Debian
1 |
# Written by kcrt <kcrt__atmark__kcrt.net>
1 |
# Nanoseconds Hunter “http://www.kcrt.net“
1 |
# Id: $Id$
1 |
#
1 |
# —– とりあえず
1 |
stty |
stop
1 |
undef |
# ^Sとかを無効にする。
1 |
# —– 色宣言
1 |
typeset
1 |
-A hostcolors |
typeset
1 2 |
-A hostblacks hostcolors |
=(
1 |
kuro green fro cyan sphe yellow pele magenda |
)
1 |
hostblacks |
=(
1 |
kuro |
001100
1 |
fro |
001111
1 |
sphe |
001111
1 |
pele |
110000)
1 |
hostcolor |
=
1 |
blue |
if[[$hostcolors[$HOST]=“”]];then
1 |
hostcolor |
=
1 2 |
blue hostblack |
=“000000”
1 |
else
1 |
hostcolor |
=$hostcolors[$HOST]
1 |
hostblack |
=$hostblacks[$HOST]
1 |
fi
1 |
export
1 |
hostcolor |
export
1 |
hostblacks |
# —– xterm(screen上以外での起動)だと思われる
1 |
if[[“$TERM“==“xterm”]];then
1 |
# 色の個別設定 – うまく動かない端末もあります
1 |
echo-n“^[]R”# first, reset the palette
1 |
echo-n“^[]P0$hostblack“# black
1 |
echo-n“^[]P1FF0000″# red
1 |
echo-n“^[]P200CC00″# green
1 |
echo-n“^[]P3CCCC00″# yellow
1 |
echo-n“^[]P45555FF”# blue
1 |
echo-n“^[]P5FF00FF”# magenta
1 |
echo-n“^[]P600FFFF”# cyan
1 |
echo-n“^[]P7CCCCCC”# white
1 |
echo-n“^[]P8888888″# BLACK
1 |
echo-n“^[]P9FFAAAA”# RED
1 |
echo-n“^[]PA88FF88″# GREEN
1 |
echo-n“^[]PBFFFFAA”# YELLOW
1 |
echo-n“^[]PC7777FF”# BLUE
1 |
echo-n“^[]PDFFCCFF”# MAGENTA
1 |
echo-n“^[]PE88FFFF”# CYAN
1 |
echo-n“^[]PFEEEEEE”# WHITE
1 |
# タイトルバーの文字列
1 |
if[[“$SSH_CONNECTION“!=“”]];then
1 |
# ssh接続
1 |
tmpTitle |
=echo -n $SSH_CONNECTION | sed -e 's/¥(.*¥) .* ¥(.*¥) .*/¥1 --> ¥2/g'
1 |
echo“^[]2;$HOST($tmpTitle, ssh)¥a“
1 |
elif[[“$REMOTEHOST“!=“”]];then
1 |
# おそらくtelnet
1 |
echo-n“^[]2;$REMOTEHOST –> $HOST¥a“;
1 |
else
1 |
# ローカルと見た
1 |
echo-n“^[]2;$HOST(local)¥a“
1 |
fi
1 |
fi
1 |
# —– 環境変数
1 |
export
1 |
EDITOR |
=“vim”# やっぱりvimだねっ
1 |
export
1 |
COLOR |
=“tty”
1 |
# —– 色関係
1 |
autoload
1 |
colors |
# $color[red]とかが使えるようになる。
1 |
colors |
evaldircolors -b
1 |
zstyle |
‘:completion:*’
1 |
list-colors |
${(s.:.)LS_COLORS}# 補完も色つける
1 |
# —– autoloadたち
1 |
autoload
1 2 |
-U compinit compinit |
-u
1 |
autoload
1 |
zmv |
autoload
1 |
zargs |
autoload
1 |
zsh/files |
# 設定はNOを頭につけると逆の意味になるよ!
1 |
# —– 補完
1 |
LISTMAX=200# 表示する最大補完リスト数
1 |
setopt
1 |
auto_list |
# 曖昧な補完で自動的にリスト表示
1 |
setopt
1 |
NO_menu_complete |
# 一回目の補完で候補を挿入(cf. auto_menu)
1 |
setopt
1 |
auto_menu |
# 二回目の補完で候補を挿入
1 |
setopt
1 |
magic_equal_subst |
# (?) –include=/usr.. などの=補完を有効に
1 |
setopt
1 |
NO_complete_in_word |
#
1 |
<span style="background-color: #ffff00;"><span style="color: #0000ff;">TODO</span></span> |
:よくわからない
1 |
setopt
1 |
list_packed |
# 補完候補をできるだけつめて表示する
1 |
setopt
1 |
NO_list_beep |
# 補完候補表示時にビープ音を鳴らす
1 |
setopt
1 |
list_types |
# ファイル名のおしりに識別マークをつける
1 |
# —– 履歴
1 |
HISTFILE=“$HOME/.zhistory”# 履歴保存先
1 |
HISTSIZE=1000# 使用する履歴数
1 |
SAVEHIST=1000# 保存する履歴数
1 |
setopt
1 |
hist_ignore_space |
# スペースで始まるコマンドを記録しない
1 |
setopt
1 |
hist_ignore_all_dups |
# 重複した履歴を記録しない
1 |
setopt
1 |
share_history |
# ターミナル間の履歴を共有する
1 |
setopt
1 |
append_history |
# 履歴を追記する
1 |
# —– ファイル操作関連
1 |
setopt
1 |
auto_cd |
# ディレクトリ名でcd
1 |
setopt
1 |
auto_remove_slash |
# 不要なスラッシュをはずす
1 |
setopt
1 |
auto_pushd |
# 自動的にpushd
1 |
setopt
1 |
pushd_ignore_dups |
# 重複したディレクトリスタックを記録しない
1 |
setopt
1 |
correct |
# コマンドのスペル補正
1 |
setopt
1 |
correct_all |
# コマンド以外もスペル補正
1 |
setopt
1 |
equals |
# =zshとかが置換される
1 |
setopt
1 |
extended_glob |
# 拡張グロブ有効
1 |
# —– そのほかの設定
1 |
setopt
1 |
print_eight_bit |
# 8ビット文字表示
1 |
setopt
1 |
prompt_subst |
# プロンプトでのコマンド置換などを有効に
1 |
setopt
1 |
beep |
# エラー時にはBeep音
1 |
setopt
1 |
NO_emacs |
# viが一番!
1 |
setopt
1 |
NO_flow_control |
# ^S/^Qを有効に
1 |
# —– プロンプト
1 |
# PROMPT=’%{^[[%(!.31.32)m%}[%n@%m]%# %{^[[m%}’
1 |
PROMPT=‘%{%(!.$fg[red].$fg[$hostcolor])%}[%n@%m]%# %{$reset_color%}’
1 |
# 最後に実行したプログラムがエラーだと反転するよ。
1 |
RPROMPT=‘ %{%(?.$fg[cyan].$bg[cyan]$fg[black])%} [%~] %{$reset_color%}’
1 |
# —– キー
1 |
bindkey
1 |
-v |
bindkey‘^z’
1 |
push-line |
bindkey‘^y’
1 |
run-help |
bindkey‘^[[A’
1 |
up-line-or-history |
bindkey‘^[[B’
1 |
down-line-or-history |
# —– 自分用関数
1 |
ShowStatus() |
{
1 |
# モードの切り替え時に右上にモードを表示
1 |
integer
1 |
Cursor_X |
integer
1 |
Cursor_Y |
integer
1 2 |
StrLength StrLength |
=
1 |
$ |
(echo-n$1|
1 |
wc -m |
)
1 |
Cursor_X |
=
1 |
$ |
[COLUMNS
1 |
- |
$StrLength]# 場所はお好みで
1 |
Cursor_Y |
=1
1 |
echo-n“^[[s”# push pos
1 |
echo-n“^[[$[$Cursor_Y];$[$Cursor_X]H”# set pos
1 |
echo-n“^[[07;37m$1^[[m”# print
1 |
echo-n“^[[u”# pop pos
1 |
}
1 |
# viins <-> vicmd {{{
1 |
Vi_ToCmd() |
{
1 |
ShowStatus |
“– NORMAL –“
1 |
builtin
1 |
zle .vi-cmd-mode |
}
1 |
Vi_Insert() |
{
1 |
ShowStatus |
“– INSERT –“
1 |
builtin
1 |
zle .vi-insert |
}
1 |
Vi_InsertFirst() |
{
1 |
ShowStatus |
“– INSERT –“
1 |
builtin
1 |
zle .vi-insert-bol |
}
1 |
Vi_AddNext() |
{
1 |
ShowStatus |
“– INSERT –“
1 |
builtin
1 |
zle .vi-add-next |
}
1 |
Vi_AddEol() |
{
1 |
ShowStatus |
“– INSERT –“
1 |
builtin
1 |
zle .vi-add-eol |
}
1 |
Vi_Change() |
{
1 |
ShowStatus |
“– INSERT –“
1 |
builtin
1 |
zle .vi-change |
}
1 2 3 4 5 6 |
zle -N Vi_ToCmd zle -N Vi_Insert zle -N Vi_InsertFirst zle -N Vi_AddNext zle -N Vi_AddEol zle -N Vi_Change |
bindkey
1 |
-M viins |
“^[“
1 |
Vi_ToCmd |
bindkey
1 |
-M vicmd |
“i”
1 |
Vi_Insert |
bindkey
1 |
-M vicmd |
“I”
1 |
Vi_InsertFirst |
bindkey
1 |
-M vicmd |
“a”
1 |
Vi_AddNext |
bindkey
1 |
-M vicmd |
“A”
1 |
Vi_AddEol |
bindkey
1 |
-M vicmd |
“c”
1 |
Vi_Change |
bindkey
1 |
-M vicmd |
“/”
1 |
history-incremental-search-backward |
bindkey
1 |
-M vicmd |
“^P”
1 |
vi-repeat-search |
bindkey
1 |
-M vicmd |
“^N”
1 |
vi-rev-repeat-search |
# vi-repeat-search
1 |
bindkey“^Q”
1 |
self-insert |
# }}}
1 |
# —– 関数
1 |
function
1 |
_w3m() |
{
1 |
:title w3m |
$1
1 |
if[[$1==“”]];then
1 |
w3m <a href="http://www.google.co.jp">http://www.google.co.jp</a> |
else
1 |
w3m |
$@
1 |
fi
1 |
:title |
$SHELL
1 |
}
1 |
function
1 |
:whatsnew() |
{
1 |
vimdiff |
$1=(
1 |
svn cat --revision HEAD |
$1)
1 |
}
1 |
fucntion :whatchanged() |
{
1 |
vimdiff |
$1=(
1 |
svn cat --revision PREV |
$1)
1 |
}
1 |
function
1 |
trash() |
{
1 |
if[$#=0];then
1 |
command
1 |
rm |
return1
1 |
fi
1 |
if[
1 |
! |
-d
1 |
~/.trash |
];then
1 |
echo“ERROR : ~/.trash not found!”
1 |
return1
1 |
fi
1 |
mv |
$@
1 |
~/.trash |
||return
1 |
if[$#=1];then
1 |
echo“‘$1’ was moved into trash!”
1 |
else
1 |
echo“$# files were moved into trash!”
1 |
fi
1 |
}
1 |
# —– エイリアス
1 |
# コマンド置き換え
1 |
alias
1 |
vi |
=‘vim -p’
1 |
alias
1 |
rm |
=‘trash’
1 |
alias
1 |
w3m |
=‘_w3m’
1 |
# 引数
1 |
alias
1 |
ls |
=‘ls -F –color=tty’
1 |
alias
1 |
du |
=‘du –human-readable -s ./*’
1 |
alias
1 |
df |
=‘df –human-readable’
1 |
alias
1 |
grep |
=‘grep –color -a’
1 |
alias
1 |
less |
=‘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’
1 |
alias
1 |
pstree |
=‘pstree -p’
1 |
alias
1 |
cal |
=‘cal -3’
1 |
alias
1 |
zmv |
=‘noglob zmv -W’
1 |
alias
1 |
zcp |
=‘noglob zmv -C’
1 |
alias
1 |
zln |
=‘noglob zmv -L’
1 |
# 省略とか
1 |
alias
1 |
la |
=‘ls -F -a –color=tty’
1 |
alias
1 |
ll |
=‘ls -F -la –color=tty –sort=time –reverse’
1 |
alias
1 |
hist |
=‘history’
1 |
alias
1 |
:q |
=‘exit’
1 |
alias
1 |
su |
=‘su -s =zsh’
1 |
alias
1 |
hexdump |
=‘od -Ax -tx1z -v’
1 |
alias
1 |
beep |
=‘print “¥a”‘
1 |
alias
1 |
cls |
=‘clear’
1 |
alias
1 |
... |
=‘cd ../..’
1 |
alias
1 |
.... |
=‘cd ../../..’
1 |
alias
1 |
..... |
=‘cd ../../../..’
1 |
alias
1 |
:kuro |
=‘ssh kuro’
1 |
if[[-x
1 |
/usr/bin/man |
]];then
1 |
compdef _man w3mman |
alias
1 |
man |
=‘w3mman’
1 |
fi
1 |
# —– suffix alias (関連づけ)
1 |
alias-s
1 |
txt |
=‘cat’
1 |
alias-s
1 |
log |
=‘tail -f -n20’
1 |
alias-s
1 |
html |
=‘w3m’
1 |
function
1 |
viewxls() |
{
1 |
w3m -T text/html |
=(
1 |
xlhtml |
$1)
1 |
}
1 |
alias-s
1 |
xls |
=‘viewxls’
1 |
# —– root用の設定
1 |
if[[$USER!=‘root’]];then
1 |
alias
1 |
updatedb |
=“sudo updatedb; beep”
1 |
alias
1 |
taillog |
=‘sudo tail -f -n20 /var/log/syslog’
1 |
# Fedoraはデフォルトで設定されてない
1 |
zstyle |
‘:completion:*:sudo:*’command
1 |
- |
path
1 |
/usr/sbin /usr/bin /sbin /bin /usr/ |
local
1 |
/sbin |
exportPATH=$PATH
1 |
:/usr/sbin:/sbin:/usr/ |
local
1 |
/sbin |
fi
1 |
# —– Abstraction (予定)
1 |
alias
1 |
: |
suspend=“sudo /usr/sbin/pm-suspend”
1 |
alias
1 |
:hibernate |
=“sudo /usr/sbin/pm-hibernate”
1 |
if[[-x
1 |
/usr/bin/yum |
]];then
1 |
alias
1 |
:package_update |
=“sudo yum update”
1 |
alias
1 |
:package_install |
=“sudo yum install”
1 |
elif[[-x
1 |
/usr/bin/aptitude |
]];then
1 |
alias
1 |
:package_update |
=“sudo aptitude update; sudo aptitude upgrade”
1 |
alias
1 |
:package_install |
=“sudo aptitude install”
1 |
alias
1 |
:package_list |
=“”
1 |
alias
1 |
:package_search |
=“sudo aptitude show”
1 |
fi
1 |
# —– cygwin 固有設定
1 |
if[[$OSTYPE=
1 |
*cygwin* |
]];then
1 |
alias
1 |
updatedb |
=“updatedb –prunepaths=‘/cygdrive’“
1 |
alias
1 |
open |
=‘cmd /c start ‘
1 |
alias
1 |
start |
=‘explorer . &’
1 |
fi
1 |
# —– screen 使うことにしたよ
1 |
if[[-x
1 |
/usr/bin/screen |
]];then
1 |
function
1 |
:title() |
{
1 |
# 1 : 普通の起動
1 |
# 2 : screen上 -> TERM = “screen”
1 |
# 3 : ssh または screen上でのssh -> SSH_CLIENTが空でない
1 |
# 4 : ssh上でのscreen -> SSH_CLIENTが空でない かつ STYが空でない
1 |
# rootの場合**を付ける
1 |
if[[$USER==“root”]];then
1 |
1=“*$1*”
1 |
fi
1 |
if[[-n$SSH_CLIENT]];then
1 |
if[[-n$STY]];then
1 |
# 4 : ssh上でのscreen
1 |
else