【コラム】
今回は、少し話がそれるが最初にEmacsの話だ。
朝起きると、既に床の横で起動している端末にログイン、おもむろにcvs update -Pdし、Emacsをビルドする。当然、シェルスクリプトで自動化されているのはいうまでもない。しかし、cronに登録しないのは彼の良心である。ギークにとっては日常茶飯事だ。
Emacsでは多くの一種独特なショートカットキーを使う。こうしたキーは普段の作業で体に染み付いてしまうもので、シェルを操作するときでもついつい同じキーを叩いてしまいがち。
ここで期待しない動作になるとストレスである。
そんなユーザのために、zshにはEmacs風ショートカットキー設定が用意されている。なにはともあれ~/.zshrcにリスト1.1の設定を追加だ。何の設定もしていなければだいたいEmacs風設定が最初から有効になっている。
代表的なショートカットキーを表1.2に掲載しておく。どのようなショートカットキーが設定されているかはbindkey -Lを実行すれば一覧表示されるので、すべて把握しておきたいユーザは調べてみるといいだろう。
| ショートカットキー | 操作内容 |
|---|---|
| Ctrl-A | 行頭へジャンプ |
| Ctrl-E | 行末へジャンプ |
| Ctrl-Y | ヤンク |
| Ctrl-X U | アンドゥ |
| Ctrl-@ | マークセット |
| Ctrl-K | カーソルから行末までを削除 |
| Ctrl-W | カーソルから行頭までを削除 |
| Ctrl-U | 一行削除 |
| Ctrl-G | コマンド入力を実行せずに無視して次の行へ |
| Ctrl-B | ←キー |
| Ctrl-F | →キー |
| Ctrl-P | ↑キー |
| Ctrl-N | ↓キー |
| Ctrl-D | Deleteキー |
| Ctrl-H | BackSpaceキー |
| Ctrl-I | 展開または補完 |
| Ctrl-L | クリアスクリーン |
| ショートカットキー | 操作内容 |
|---|---|
| Ctrl-X Ctrl-F | vi風文字一致検索 |
| Ctrl-X Ctrl-V | viコマンドモード |
| Ctrl-X Ctrl-U | アンドゥ |
特にCtrl-A、Ctrl-E、Ctrl-K、Ctrl-Lあたりはよく使うショートカットだ。これが使えないとなるとかなりストレスを覚える。
なにも設定していないにもかかわらず、Ctrl-AやCtrl-Eが動作しない場合、環境変数EDITORがviやvimに設定されていると思う。EDITORにvi系エディタが設定されていると、自動的にVi風のショートカット設定が有効になるのである。
このあたり、気が利いていると思う。
Emacsに対抗できる変態度を備えたエディタといえばVi。
編集モードとコマンドモードという二面性を備えたViエディタは一度慣れてしまうとヤミツキになる。インタラクティブシェルで行をクリアしようとしてESC ddと入力してしまうようなら、もはやVi症候群におかされているとみていい。
zshは、当然こうしたViギークの心をも捉えてはなさない。むしろViユーザこそ、シェルとしてはzshを採用するべきだ。zshは当然のごとくViモードのキーバンド設定を提供している。Viギークはなにはともあれリスト2.1を追加だ。
| ショートカットキー | 操作内容 |
|---|---|
| (編集モード)ESC | コマンドモードへ移行 |
| (コマンドモード)I | 編集モードへ移行(行頭から入力) |
| (コマンドモード)A | 編集モードへ移行(行末から入力) |
| (コマンドモード)i | 編集モードへ移行(カーソルから挿入) |
| (コマンドモード)a | 編集モードへ移行(カーソルの次の文字から挿入) |
| (コマンドモード)o | 編集モードへ移行(次の行から入力) |
| (コマンドモード)O | 編集モードへ移行(前の行から入力) |
| (コマンドモード)dd | 一行削除 |
| (コマンドモード)D | カーソルから行末まで削除 |
| (コマンドモード)x | Deleteキー |
| (コマンドモード)X | BackSpaceキー |
| (コマンドモード)yy | コピー |
| (コマンドモード)p | ペースト |
Vi風のキーバインドが有効になると、入力部分はまるでViエディタそのもののようになる。
ESCキーでコマンドモードにはいるし、I, A, i, aで編集モードへ移行だ。当然のごとくViで活用される代表的なコマンドが提供されている。bindkey -Lで確認するとわかるが、bindkey -vを実行した場合は表1.2のEmacsショートカットは使えない。そこに広がるのはあのViワールドである。
えらいよ、Vi、いやzsh。
ショートカットキーの話をしたところで、前回の話の続きにはいりたい。コマンド履歴の検索機能をどう設定するかだ。
tcshの便利な機能のひとつとして、コマンド履歴の検索機能がある。これはたとえば"ls -"のように入力してからCtrl-Pを押すと、コマンド履歴の中から"ls -"ではじまるコマンドを順次表示するというものだ。
そして当然、zshでも同じような機能が用意されている。ただしzshの場合、複数行を複数行のまま扱えるという特徴があるので、うっかり設定すると他のショートカットキーと設定がぶつかって別のシーンで扱いずらくなる。ということでリスト3.1の設定を追加だ。
リスト3.1 履歴検索機能のショートカット設定
リスト3.1のように設定しておけば、コマンド履歴の検索機能はCtrl-PとCtrl-Nに割り当てられ、複数行の編集には↓↑←→を使うといった風にすみわけができる。Ctrl-PとCtrl-Nを別の機能として使っているなら、bindkey "^P"やbindkey "^N"を適当な扱いやすいものに変更すればいい。コマンド履歴が10万行あったとしても、このコマンド履歴検索機能を使えばさくっと過去のコマンドを表示できるというわけだ。
今回説明した設定内容を設定ファイルにまとめたものを掲載しておく。設定例はEmacsキーバインドのものだ。Vi風を好むならbindkey -eをbindkey -vに変更すればいい。
bashで同じような設定をする場合、~/.bashrcではなく~/.inputrcにリスト4.2のような設定を追加する。tcshならリスト4.3だ。bash/tcshでは複数行の編集はしないので、Ctrl-P, Ctrl-Nではなく↑↓にショートカットキーを設定してある。zshが使えない環境での参考にしてみてほしい。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
「ゆりてつ」サイン会は作者と都電に揺られるツアー仕立て [17:45 5/27] ホビー |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |
|
鍼灸(しんきゅう)師が教える。オフィスで口臭予防ツボ・ベスト3 [17:00 5/27] キャリア |
|
[梶浦由記]米「アニメ・エキスポ」に2度目の参加決定 [17:00 5/27] ホビー |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第107回 今回のお題は…「chemical」 [17:00 5/27] キャリア |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。