======Shell====== =====Screen===== ターミナルの拡張?みたいなやつ\\ Emacsとscreenとzshは人生に必須です。\\ emacsのelscreenみたいな操作。たぶん、elscreenがscreenに似てるのかも。\\ すべてC-aのコマンドから始まるけど、C-aを使えなくなってじゃまなんでC-zとかに変更。\\ C-tとかにする人が多いらしいですが、単語うち間違えが多い自分はC-tってよく使うのでローカルのscreenはC-z,リモートのscreenはC-uとしています。 emacsのelscreenとおなじコマンドにしておくと覚えやすくてよろし。\\ 設定ファイルは~/.screenrc $ sudo emacs ~/.screenrc defencoding utf-8 escape ^u^u defshell /usr/local/bin/zsh vbell off autodetach on startup_message off defscrollback 10000 defhstatus I^En:^EtI hardstatus off hardstatus alwayslastline "%`%-w%{=b mw}%n %t%{-}%+w" bind 2 split bind o focus bind 1 only bind 0 remove screenの起動はshellから $ screen で起動 ^ コマンド ^ 動作 ^ | C-z C-c |新規ウィンドウ作成 | | C-z C-n,C-z C-p | ウィンドウ移動 | | C-z C-k |現在のウィンドウを消す | | C-z esc,C-z C-[ |コピー/スクロールバックモードに入る。 | | C-z d | デタッチ | | C-z r [pid] | アタッチ | | screen -ls | デタッチ一覧 | | C-z [ | コピーモード | | コピーモード中にesc | コピーモード終了 | | コピーモード中にspace | コピー範囲のマーク、確定 | | C-z ] | ペースト | | C-z ? |へるぷみー | ====デタッチ、アタッチ(detache,atache)==== いくつwindowを起動しているかとか何を動作させているかとかの状態を保ったまま、screenを終了させるのがデタッチ。 デタッチした状態にまた接続することがアタッチ。 これがあると会社からリモート接続しているサーバ上のscreenでいくつもwindow出して作業していても帰るときデタッチしといて、 家帰ってアタッチすればまた同じ状態から続けられるのです。すばらしすぎです。 デタッチはC-z dです。[detached]と表示されるはずです。 デタッチされてるscreen一覧は screen -lsでみれます。 $ screen -ls There is a screen on: pid.tty.host (Detached) 1 Socket in /tmp/uscreens/S-user. アタッチするときは $ screen -r [pid] ですが、デタッチしているのが1個だけのときは引数なしで $ screen -r でアタッチできます。 ====コピーモード==== これも便利。 windowの内容を別のwindowにコピーしたいときにマウスを使ってコピペする必要がありません。 順序は - C-z [ (コピーモード開始) - viキーバインドで移動 - spaceでマークセット - spaceでコピー終了位置確定 - 別のwindowなんかに移動してC-z ]でペースト - esc (コピーモード終了) となります。コピーモードは単純にバッファをさかのぼりたいときにも使えます。 ===コピーモード中によく使いそうなviキーバインド=== ^ 動作 ^ 説明 ^ | C-u | 半ページ上に移動 | | C-d | 半ページ下に移動 | | C-b | 1ページ上に移動 | | C-f | 1ページ下に移動 | | /[search] | 下方向に検索 | | ?[search] | 上方向に検索 | | n | 検索続ける | | N | 逆方向に検索続ける | =====zsh===== 最強のしぇる。らしい。覚えることいっぱい \\ killでpidを調べなくてもtab補完でlistがでたりプロセス名を自動でpidに変換してくれたりします。\\ 古いzshは変なので[[http://jaist.dl.sourceforge.net/sourceforge/zsh/|ここ]]から最新(devel)をダウンロードします。 ====.zshrc==== LANG=ja_JP.UTF-8 autoload -U compinit compinit PATH=/opt/local/bin:/opt/local/sbin/:$PATH ## history HISTFILE="$HOME/.zhistory" HISTSIZE=100000 SAVEHIST=100000 setopt extended_history setopt hist_ignore_dups setopt share_history function history-all { history -E 1 } 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 ## 補完時に大小文字を区別しない zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' zstyle ':completion:*' menu select=1 ##cdなしのディレクトリ名だけで移動 setopt auto_cd ##cd -[tab]で移動履歴表示 setopt auto_pushd ##間違えたコマンドを修正 setopt correct ##補完候補をつめて表示 setopt list_packed ##ピープ音をoff setopt nolistbeep # no remove postfix slash of command line # setopt noautoremoveslash ## emacs key bind bindkey -e #default editor EDITOR=vim VISUAL=$EDITOR export EDITOR VISUAL alias editor=$EDITOR #zshにあるデフォルトのテーマを使う autoload promptinit promptinit prompt adam2 export LANG PATH ## alias alias l='ls -lA' alias ll='ls -lA | less' ## Carbon Emacs [[ $EMACS = t ]] && unsetopt zle if [[ $EMACS = t ]]; then prompt off PROMPT="%n@%m:%/%^[$ " fi ついでにemacsのピープ音の消しておくと静かになります\\ .emacs.elかなんかに (setq visible-bell nil) ====【bindkey -e】時のEmacs風コマンド==== ^ ショートカットキー ^ 動作 ^ | C-a | 行頭へジャンプ | | C-e | 行末へジャンプ | | C-f | 一文字前進 | | C-b | 一文字後退 | | C-y | 貼付け | | C-x u, C-_ | Undo | | C-space | リージョンの先頭をマーク | | C-w | リージョンを削除(切り取り) | | Esc w | リージョンをコピー | | C-k | カーソル位置から行末まで削除 | | C-d | カーソル位置を削除(del) | | C-h | カーソル位置の一つ後ろを削除(backspace) | | C-p | ↑と同じ | | C-n | ↓と同じ | | C-l | 画面を表示し直して、現在行を画面中央に | | C-i | tabと同じ | ====ヒストリ系なコマンド==== ^ ショートカットキー ^ 動作 ^ | C-r | インクリメンタルサーチ | | C-p | ヒストリの一つ前 | | C-n | ヒストリの一つ次 | | M-p | 入力したコマンドで始まるヒストリ履歴のみでC-p | | M-n | 入力したコマンドで始まるヒストリ履歴のみでC-n | | C-o | Enterのかわりに使うとヒストリの次のコマンドが自動で入力される | ====変な警告==== zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? こんなのがでてきたら。 $ compaudit ってコマンドを入力するとパーミッションが正しくないフォルダが一覧表示される。ので。 \\ それらを全部 chmod -R 755 する。