わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

zshの展開にアンドゥ

 答案整理にコマンドを活用しています.
 コマンドでは,ワイルドカードをよく使用します.「*.c」とかです.
 Cのソースファイルを提出してくださいと指示していても,授業初回は,WordやRTFやPDFでアップロードされた答案が,いくらかありまして,それらを別のディレクトリに移動するのは,エクスプローラーとマウスよりも,端末でコマンド実行の方が,操作しやすいのです.移動してカレントディレクトリがテキストファイルのみになったら,詳細なコマンドは割愛しますがワイルドカードを活用しながら答案を一つのファイルにして保存し,Emacsで開いて先頭から読んで素点を付けていきます.
 実際の答案ファイルをお見せするわけにもいかないので,2年向けプログラミング科目*1の初回,「Cの復習」としてダウンロードしてもらった5つのファイルを使って,挙動を見ていくことにします.「ls *.c」まで打ち込み,Enterキーは押していない状態です.

f:id:takehikom:20201205070728p:plain
 「c」の直後にカーソルがあるのを確認*2してから,Tabキーを押すと,ファイル名展開によって,カレントディレクトリで「*.c」にマッチするファイル名に置き換わります.複数あれば,空白区切りですべて表示されます.
f:id:takehikom:20201205070735p:plain
 これでEnterキーを押すと,このコマンドの字句が,実行履歴に残ります.しかし,あとで再実行したいコマンドは,ファイル名展開前のパラメータのほうというのがよくあります.
 あるときに,展開直後にアンドゥしたらどうなるのだろうと思い,試してみました.bindkey -eでEmacsキーバインドにしていて,C-/(Controlを押しながらスラッシュ)で…
f:id:takehikom:20201205070743p:plain
 展開前に戻ってくれました.「*.c」が青色で見にくいのは,個人的な設定によるものです.
 ファイル名以外にも使えるでしょうか.「ls `pwd`/」を実行して,Tabキーを押すと「ls /home/takehikom/c/」に変わります.そうしてC-/で…
 「ls `pwd`/」に,戻ってくれました.
 ところで,「bindkey -e」というのは,~/.zshrcに記載しています.他のオプションは,次のページで整理されています.

 オプションなしの「bindkey」を実行すると,キーバインドWindowsでいうショートカットキー)の一覧が表示されました.undoが割り当てられているのは,"^X^U"と"^Xu"と"^_"でした.同様の書式だと"^/"となるのが見当たらない*3のは,それでもコントロールスラッシュが有効なのは,zshのチョビ不思議*4なのかもしれません.

*1:「WordやRTFやPDFでアップロード」は,1年向けの科目で見かけます.なのですが2年向けのほうでも,コンパイル後のファイルというのは毎年のことです.

*2:空白ひとつでもあると挙動が変わってきます.

*3:Emacsで,M-x help(このあとRET),k,C-/の順にタイプすると,コマンド情報が出てきます.そこでは"It is bound to C-_, <undo>, C-/, C-x u, <menu-bar> <edit> <undo>."となっていて,C-/が含まれています.

*4:七不思議では,ないと思います.