Personal tools
You are here: Home ブログ matsuyama zsh のコマンドラインに入力中のファイルを閲覧する方法
Document Actions

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
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.