【linux】【mytool】fishingz (fish シェル専用 CUI ランチャ)

fishingz

 
github.com
 

ツールの概要

 

  • fish シェル用パッケージ (Linux CUI 環境用)

 

目的

 
CUI にて、 fzf によりディレクトリやファイルを選択し、何かしらのアクション(移動や開く)をさせる操作は非常に楽だと思う。
ただし、(贅沢ながら)以下の点のみが不満として心の中で燻ぶっていた。
 

fzf に対してパスを指定することが面倒である。
ファイルシステム全体に対して高速で fzf でパスを絞り込んで欲しい。、
そして、即座にディレクトリ移動やファイルオープンをしたい。
 
だが、仕方あるまい。贅沢を言ってはバチが当たる。パスを入力するか。。
 
パス入力したらサーチ開始か...
  
先程アクセスした場所なのだから、キャッシュしておいて都度サーチは止めて欲しいな。
(そもそも、そんなに都合良く、キャッシュさせることは難しいか...)

 
そこで、上記不満を少しでも柔らげるため (それと fish シェルの勉強のために) fishingz を作成した。

使用例

 

ホームから /var/www/git 以下のディレクトリへ移動する場合

 
1. ホームディレクトリにいる状態
f:id:dnkrnka:20180609155807p:plain
 
2. C-u C-u を押下して選択画面を呼び出す (= fishingz の機能)
本来のトリガーは fishingz コマンドであるが、いちいちコマンド入力が面倒なので fish シェルの関数を使って C-u C-u に割り当てている。
 
3. 全ファイルシステムのパス情報を保持した DB が開く
f:id:dnkrnka:20180609160500p:plain
 
4. varwww などと入力して移動先を選択する
なお、下図中の行頭 [d] はディレクトリ、[f] はファイルである。(見易さのために色分けした)
f:id:dnkrnka:20180609161030p:plain
 
5. Enter を押下すると移動できる
 
 

ホームから /etc/systemd/system/... 以下の apache2 サービスファイルを見る場合

 
なお、下図中の行頭 [l] はシンボリックリンクである。シンボリックリンクは選択した後に挙動が決まる。
1. C-u C-u を押下して選択画面を呼び出す (= fishingz の機能)
 
2. etcsystemapache 等で絞り込む
f:id:dnkrnka:20180609163532p:plain
 
3. テキストファイルであれば、fishignz 上で事前に紐付けておいたアプリで開かれる。
下記は Neovim で開いた例である。(結果的にシンボリックリンクにアクセスした後に、実体のファイルが開かれた)
私は、読み取り専用ファイルであれば、sudo を伴ってファイルを開く設定にしている。
f:id:dnkrnka:20180609162455p:plain