C-l で ls も実行

なんか真剣に調べたら出てきそうな内容だけど, 検索が面倒になったから作った.
(はてな内検索してて作れそうな気がしてきたから.)



まず, .zshrc上に, C-lってどう書いたらいいか分かんないからそれを調べた.
端末エミュレータ上で, bindkeyと打って, 現在のキーバインドを確認.
その中から, お目当ての, C-lっぽいのを探す.

"^L" clear-screen

うん, 名前からしてこれっぽい.
clear-screenって端末上で打っても, そんなコマンド無えよっって怒られたけど,
clearってコマンドで望みの動作したから, それ使う.
これで準備は, OK.


とりあえず, こんな関数作って, キーに割り当てた.

function clear-screen-and-ls() {
    clear
    ls
    zle reset-prompt
}
zle -N clear-screen-and-ls

bindkey '^L' clear-screen-and-ls # C-l で clear + ls

zle reset-promptやんないとコマンド実行後にプロンプト表示されない(コマンドは実行できるけどね).
zle -N clear-screen-and-ls やっとかいなと bindkey に割当てても何か怒られて使えない.
色々見てたら, こう書いてあったから, それをそのまま流用.



zle の意味とか全然分かってないけど, それはまた気が向いたときに調べよう.

追記

あれ, 端末エミュレータを最大化しといたら, 上手く動かない.
何でだろう?
reset-prompt切ったら問題ないけど, 見栄え悪いなあ.

さらに追記

こう直したらちゃんと表示できたけど, 無駄に1行空いて汚い.

function clear-screen-and-ls() {
    clear
    ls
    zle accept-line
}

さらにさらに追記

echo挟んだら上手くいった.

function clear-screen-and-ls() {
    clear
    ls
    echo
    zle reset-prompt
}