zsh


シェル(bash)と共通の部分についてはSanRin舎 » UNIX/Linux参照。

インストール

inst_zsh.sh at master from tmsanrinsha/dotfiles – GitHub参照。

コマンドラインでの操作

Emacsのキーバインド(bindkey -e)に設定している場合。

Ctrl+f
Ctrl+b
Ctrl+p
Ctrl+n
Ctrl+a カーソルを先頭へ
Ctrl+e カーソルを末尾へ
M-f 次の単語へ移動
M-b 前の単語へ移動
Ctrl+d DEL
Ctrl+h BS
Ctrl+k 現在のカーソル位置から右側の文字を全て削除
Ctrl+u 一行削除/td>
M-d 次の単語を削除
Ctrl+w 前の単語を削除
Ctrl+s コマンドが出力する画面出力を一時停止
Ctrl+q コマンドが出力する画面出力の一時停止を解除
Ctrl+l 画面をクリア
Ctrl+c プログラムの実行を中止
Ctrl+z プログラムの実行を一時停止
fg foreground。一時停止たプログラムの再開
M-. 直前のコメンドの最後の引数を挿入
M-Enter コマンドを実行せずに改行する

M-*はEscまたはCtrl+[をおして*を押す。もしくはAltをしながら*を押す。

Tera TermでAltキーを使うためには「設定」-「キーボード」で「Meta キー」にチェックをいれる。しかしチェックをいれるとAlt+Nで「新しい接続」とかが効かなくなっちゃう。それを解消するやり方はこちら

ちなみにTera Termで上(下)にスクロールしたい時ははCtrl+↑(↓)。

zshの設定

補完

ディレクトリ関連

autojump

ディレクトリの移動が楽になりそうなプラグイン。

setopt auto_pushd

autoload -U compinit
compinit
setopt auto_pushd

と設定して

cd -[tab]

と打つとディレクトリの履歴が表示される。さらに表示された番号を打ってEnterでそのディレクトリに移動できる。

しかし、その表示されるディレクトリの順序は古いの方が上になっている。

cd +[tab]

と打てば新しいほうが上になるが、-の方が補完な気がするので以下のようににして+と-の役割を逆転させた。

setopt auto_pushd
# cd -[tab]とcd +[tab]の役割を逆にする
setopt pushd_minus

zshでcd先をディレクトリスタックから選択する順番 @ 7bitを参考にした。

SanRin舎 » ディレクトリスタックを端末間で共有したり、保存するも参照。

ディレクトリのブックマーク

プロンプト

SPRONPTについては漢のzsh (2) 取りあえず、プロンプトを整えておく。カッコつけたいからね | エンタープライズ | マイナビニュースを参考にした。

漢のzshにおいてプロンプトの^[はCtrl+V [Esc]で入力するとあるが、$’\e’で置き換えることができる(こっちの方がコピペできてよい)。

「C-zでサスペンドしたとき(18)以外のエラー終了時に%#を赤く表示」の部分はzshで究極のオペレーションを:第3回 zsh使いこなしポイント即効編|gihyo.jp … 技術評論社を参考にした。

ホスト名でプロンプトの色を変える部分は[Linux] ホスト名毎にプロンプトの色を変更 : Edo::World::Blogを参考にして作った

zshのコマンド

Esc+h sudoなどのコマンドを打って、Esc+hと打つとsudoのマニュアルを見れる。戻るとsudoまでうたれた状態でカーソル位置も同じ
Esc+q コマンドを途中まで打った状態でEsc-qと打つと、そのコマンドをスタックに入れてコマンドラインが空になる。何かコマンドを打つと、スタックから途中まで打ったコマンドが降りてくる。
**/ カレントディレクトリ以下を再帰的に検索してくれる。例えばrm **/*.(log|aux)(.m+3)で「カレントディレクトリ以下にあるすべての*.log または *.aux という通常ファイルのうち 4日以上アクセスしていないものは全部消す」ことができる(zshで究極のオペレーションを:第1回 zshで広がる世界|gihyo.jp … 技術評論社)
history [n] n番目のコマンド履歴からコマンド履歴を表示

glob

zshで究極のオペレーションを:第1回 zshで広がる世界|gihyo.jp … 技術評論社に載っている例

% find . '(' -name '*.log' -o -name '*.aux' ')' -a \
      -type f -a -atime +3 -exec rm '{}' ';'
% rm **/*.(log|aux)(.m+3)

UNIX今日の技 – UNIX今日の技/zshに乗ってる例(他にもたくさん)

% less *.txt~memo.txt    # memo.txt 以外の *.txt にマッチ
% rm *~POSCAR*~INCAR~KPOINTS~POTCAR      # vaspの入力ファイル以外の出力ファイルを全て消す

プロセス置換

zshのオプション

autoloadのオプション

Screen

リンク