Zsh小技

zshでいろいろ試してたら小技を見つけたのでメモします。Zな人からすれば「そんなの常識だぜ!」というものかもしれないけど。(ちなみにman zshzleに全部載ってた。ただし英語ですが)

*設定によってはうまく働かないものもあるかもしれないのでご了承を


M + h => バッファ内の最初の単語に対して run-help する
関数名:run-help
man hoge と違うのは、コマンドがバッファに残ったままになる点。再度コマンド入力をしなくてもいい。


M + ¥(バックスラッシュ) => バッファ内の最初の単語に対して which-commandする
関数名:which-command
which-command は which とほぼ同じ。M + ? でも同じだね



M + / => ヒストリーワードの展開
関数名: history-complete-older

単語レベルでの履歴を展開する.

hiroya /Users $ ls ./                          
history word
./pla/plagger/plagger                      
./192.168.0. -music                        
./192.168.0. -musica                       
./configure                                
./plagger                                  
./{?{3112ca9c-de6d-4884-a869-9855de68056c?}
./Library/Application?                     
./svnroot/wkdir/config_repo                
./                                         
./svnroot/wkdir/config_repo                
./*                                        
./                                         
./plaggerd                                 
./bak.pl   

ヒストリーの中から 「./」ではじまる単語を展開している



コマンドの直後で M + p もしくは M + n => コマンドの引数/オプション等の履歴を参照
関数名:history-search-backward例として、psの直後で使うと ps aux , ps aux | grep hoge というように太文字の部分だけを履歴から参照する。



M + ~ => ユーザー名の補完候補を展開
関数名:_bash_complete-word
ユーザー名一覧がでてきた


バッファの右端で Ctrl + D => 補完候補の展開
関数名:delete-char-or-list
入力途中というのがミソ。
ま、Ctrl + TAB で出来るからつかわないけど。


M-x => executeモード
関数名:execute-named-cmdzshの内部コマンドを実行できる。で、さらにここでタブを押すと、zshの内部コマンド名がどばーっとでてくる。こりゃ知らんかった。zshでごそごそしたい人は必見ですね。自分で定義した関数も表示されます

追記:
ZLE(Zsh Line Editor)というモジュールの中で定義された関数のみが対象なようです。ZLEはEmacs/viライクなキーバインドを実現させたりする、zshのモジュールのようです。


はてなの技術勉強会ではこのコマンドからテトリスを起動する方法が紹介されてたな。

  • M-x => execute:describe-key-briefly  で何かキー入力すると、そのキーにバインドされた関数名が表示されます