tcshからzshへ移行
UbuntuからDebianに乗り換えて, 最初は今まで通りtcshを使ってたけど, 日本語の入力が出来ないことに気付いた.
おそらく調べればできるようになるんだろうけど, 面倒臭い.
ためしにやってみたbashやzshでは問題なく日本語入力が出来たので, 同じ面倒臭さならば丁度良いと思い乗り換えることにした.
(前から乗り換えよう乗り換えようと思ってたし.)
やるからには, 最低でも今のtcshと同じぐらいの機能は欲しい.
プロンプトの設定
私は, tcshだと以下のように設定している.
if ($?tcsh) then set prompt='[%n@%m %c02]$ ' else set prompt=\[`id -un`@`hostname`\]\$\ endif
まあ, 間違いなくどっかから取ってきたもの.
zshでも似たような形に設定した.
PROMPT="[${USER}@`hostname` %~]"$'\n'"%(!.#.$) " # 左側のプロンプト #RPROMPT=' %~' # 右側のプロンプト
PROMPTは, 左側のもの. RPROMPTは, 右側のもの.
RPROMPTを使うのはやめにして, 2段組みにした.
zshoptions
まずは, オプションの設定と解除. setoptが設定でunsetoptが解除(そのまんま).
$ setopt オプション $ unsetopt オプション
オプションのアンダースコア, 大文字小文字の違いは無視される.
とりあえず, 色々参考にしながらこんなの書いた.
かなり便利や〜.
setopt auto_cd # ディレクトリ名でcd setopt auto_list # 補完候補が複数あるとき, 一覧表示 setopt auto_menu # タブキー連打で補完候補を順に適応 setopt auto_param_keys # 括弧の対応などを自動的に補完 setopt auto_param_slash # ディレクトリ名の最後に自動的に/を追加 setopt auto_resume # 中止しているプロセスと同じ名前のコマンドを実行したとき, それを実行 setopt no_beep # ビープ音を停止 setopt brace_ccl # ls {0..100} で ls 0 1 2 3 ... に展開するようにする setopt correct # コマンドのスペルチェックをする setopt extended_glob # #, ~, ^を正規表現の一部と扱う setopt no_flow_control # C-q, C-sを使わない setopt hist_ignore_dups # 直前と同じコマンドラインは, ヒストリに追加しない setopt hist_ignore_space # コマンドラインの先頭がスペースの場合, ヒストリに追加しない setopt hist_no_store # historyコマンドをヒストリリストから取り除く setopt hist_save_no_dups # 古いものと同じコマンドは, ヒストリに書き出さない. setopt hist_verify # ヒストリを呼出してから実行する間に一旦編集できるようになる setopt no_hup # HUPシグナルを送らないようにする setopt ignore_eof # C-dで終了しないようにする setopt interactive_comments # コマンドラインでも#以降をコメントとする setopt list_types # 補完候補一覧でls -Fのように種類を表示 setopt long_list_jobs # jobsの出力をデフォルトで jobs -l にする setopt magic_equal_subst # =以降でも補完できるようにする( --prefix=/usrのような ) setopt mark_dirs # ファイル名の展開でディレクトリ名にマッチした場合, 末尾に/をつける setopt numeric_glob_sort # 辞書順ではなく数値順でソート setopt print_eight_bit # 補完リストその他でも8ビット文字を表示する. setopt prompt_subst # 色を使う setopt share_history # 履歴を共有 setopt transient_rprompt # 右プロンプトに入力がきたら消す
頭にno_がついているのは, nosetoptしたのと同じ.
補完
とりあえず, これで十分.
# デフォルトの補完機能を有効にする autoload -U compinit compinit # 補完侯補をEmacsのキーバインドで動き回る zstyle ':completion:*:default' menu select=1 # 補完の時に大文字小文字を区別しない zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # 補完候補を←↓↑→で選択 zstyle ':completion:*:default' menu select true
ヒストリの設定
とりあえず拝借してきた設定をそのまま適用.
HISTFILE="$HOME/.zhistory" # 履歴ファイル HISTSIZE=10000 # メモリ上に保存される $HISTFILE の最大サイズ SAVEHIST=10000 # 保存される最大履歴数 function history-all { history -E 1 } # 全履歴の一覧を表示する
キーバインドの設定
まずは, Emacs風の設定を適用.
bindkey -e # Emacs風キーバインド bindkey '^R' history-beginning-search-backward # 先頭マッチのヒストリサーチ bindkey '^S' history-beginning-search-forward # 先頭マッチのヒストリサーチ
デフォルトでは, M-p, M-nにバインドされているコマンドを, C-r, C-sで行えるようにする.
このコマンドは, 以前に ls libというコマンドを実行していたならば, ls と入力したあと, C-rとするだけで履歴から ls libをひっぱてきて補完してくれる, というもの.
元々のC-rをつぶしてるけど, いまいち使いこなしてないし, 何よりこれに慣れてしまったから, このままで行く.
エイリアスの設定
環境変数
今までのは, .zshrcファイル.
んで, 環境変数は, .zshenvファイルに書くみたい.
マニュアル真面目によんでないからよく分かんないけど.
自分の書いたの.
export LANG=ja_JP.EUC-JP # 文字コードは, euc-jp export JLESSCHARSET=japanese # 日本語 less export LESS='-N' # less で行番号をつける export HTTP_HOME="http://www.google.co.jp/" # w3mのホーム export EDITOR="emacs" # 標準のエディタは, emacs export SVN_EDITOR="emacs -nw" # よく分からんがとりあえず設定. # For mule-ucs on Debian export DEB_MULEUCS_UNICODE="yes" export DEB_MULEUCS_JISX0213="yes" # PATH の設定 path=($path)