2008/04/30
zsh のコマンドラインに入力中のファイルを閲覧する方法
シェルというのはコンピュータに命令を送るのには非常に適したインターフェースですが、その反面、操作する人間のちょっとした気分の変化にうまく対応できないという欠点があります。
$ svn add foo.txt
ここでちょっと気が変わって foo.txt の中身を見たいとします。僕の場合は以下のようにしていました。
$ svn add foo.txt^u # Ctrl+U でコマンドラインをクリア $ less foo.txt $ ^y # ^u した内容をペースト $ svn add foo.txt
これではシェルを使っているのではなく、シェルに使われてしまっています。せっかく zsh を使っているのですから以下のような事をしたいです。
$ svn add foo.txt^x^r # Ctrl+X Ctrl+R でカーソル直前のファイルを less ... # less 中 $ svn add foo.txt # less が終わったら入力していたコマンドラインを復元
ちょっと調べてみた感じだと結構簡単に実装できるようです [1] 。
[1] | 例のごとく zsh のドキュメントはあまり役にたちませんでした |
function view-file() { zle -I local file local -a words words=(${(z)LBUFFER}) file="${words[$#words]}" [[ -f "$file" ]] && $PAGER "$file" } zle -N view-file bindkey "^x^r" view-file
これを ~/.zshrc あたりに記述しておけば Ctrl+X Ctrl+R でコマンドラインに入力中のファイルを閲覧することができます。ついでに編集できるようにもしておきましょう。
function edit-file() { zle -I local file local -a words words=(${(z)LBUFFER}) file="${words[$#words]}" [[ -f "$file" ]] && $EDITOR "$file" } zle -N edit-file bindkey "^x^f" edit-file
これで、 Ctrl+X Ctrl+F でコマンドラインに入力中のファイルを編集できます。ただ EDITOR が Vim の場合は少し問題があるようで、適宜 jed なり emacsclient なりに変更して使ってください。
- Category(s)
- linux
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/zsh-peek-file/tbping