FDclone

昔よくお世話になったソフトに「FD」があります。
FDclone」はこの「FD」の上位昇華版とも言うべきソフトで、現在様々な環境で動作しています。
私もMACにした時いち早くインストールしました。
Homebrewには標準でFormulaがありませんが、簡単に記述できます。


require 'formula'

class Fdclone < Formula
    homepage 'http://hp.vector.co.jp/authors/VA012337/soft/fd/'
    url 'http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.01.tar.gz'
    version '3.01'
    sha1 '064ad86e3396d768c9f4722cdece19e50a3f5e8e'

    def install
        ENV.j1
        system "make", "PREFIX=#{prefix}", "all"
        system "make", "MANTOP=#{man}", "install"
    end
end

これを、fdclone.rbとして/usr/local/Library/Formulaの中に放り込み、
$ brew install fdclone 以上です。

インストール後は、ほとんど設定など要らないくらいですが、文字コードとzipの設定は変えました。
後は、キーバインドや拡張子設定やエイリアスなどお好みで。
設定ファイルは「~/.fd2rc」です。
日本語マニュアルもありますので、日本語man環境があれば、
$ man FD
で見る事ができます。

ところで、これを話題にしたのは、fdshをどうしてもLoginシェルに出来なかったからです。
起動しようとはしますがターミナルが落ちてしまいます。

LoginシェルのfdshからFDcloneを起動すれば「ESC→Q」でカレントディレクトリを移動したまま終了できます。
これは「FD」時代から愛用していた「視覚的CD?」機能です。

通常のLoginシェルからfdshを起動することはできますし、exec fdshとしても起動できますが、それではこの機能が利用できません。
fdshを使わずにこの「視覚的CD」機能を実現する方法案は添付の資料にも書いてありましたが、私の環境ではうまくいきませんでした。

そこで、一番ダーティーですが、ファイルを利用する事にしました。
例えば「.bashrc」などに、

# For fdclone
FD_LAST_PATH_FILE=~/.fd_last_path_file; export FD_LAST_PATH_FILE
fd() {
    `brew --prefix`/bin/fd $@
    cd `cat $FD_LAST_PATH_FILE`
}

と書いておきます。
「.fd2rc」には、

# traditional quit function
bind q "write_current_dir; exit"
bind Q "write_current_dir; exit"
write_current_dir() {
    if [ -n $FD_LAST_PATH_FILE ]; then
        pwd > $FD_LAST_PATH_FILE
    fi
}
write_current_dir

こう定義しておきます。
「FD」を起動していろいろ操作したあと、「ESC」で終了すれば従来通り元のディレクトリに戻りますが、「Q」「q」を押すと、有無を言わさず今見ているディレクトリにカレントを移動します。
.fd2rcの書き方を変えれば問い合わせも出来ますが、いちいち何かキーを押すのが面倒になってこうなりました。

FDcloneを使えば、ディレクトリを追いながらでもたいていの作業は組み込みのfdshでできますが、プロジェクトツリーなどで、どうしてもそこをカレントディレクトリにしてコマンドラインに戻りたくなった時に便利です。
(そういうディレクトリって、たいてい面倒な場所にある面倒な名前ですから)

 

FDclone」への2件のフィードバック

  1. ピンバック: rc | VivaFan通信

  2. ピンバック: fishfish | VivaFan通信

コメントをどうぞ