2023/10/13(金) [n年前の日記]
#1 [prog][windows] CUIファイラー lf を試用
lf という、ターミナルで動作する(CUI/CLIで動く)ファイラーを、Windows10 x64 22H2 上で試用してみた。Windows上では、DOS窓(cmd.exe)、もしくは、Powershell上で動く。昔、NEC PC-9801を触っていた人であれば、FD や FILMTN みたいなソフトと伝えればジャンルが分かりそう。
_GitHub - gokcehan/lf: Terminal file manager
Go言語で書かれたファイラーらしい。Ranger という、Python で書かれたCUI(CLI)ファイラーから影響を受けている。
以前もインストールしてたっぽいのだけど、使い方どころかインストールしたことすら忘れてたので、今回メモしておくことにした。
_GitHub - gokcehan/lf: Terminal file manager
Go言語で書かれたファイラーらしい。Ranger という、Python で書かれたCUI(CLI)ファイラーから影響を受けている。
以前もインストールしてたっぽいのだけど、使い方どころかインストールしたことすら忘れてたので、今回メモしておくことにした。
◎ インストール :
github から入手。
_Releases - gokcehan/lf - GitHub
リリース版の r31 を入手。Windowsの場合、lf-windows-386.zip と lf-windows-amd64.zip の2つがある。今回は32bit版(386版)を使ってみた。
解凍すると、中に lf.exe だけが入っている。パスが通っているどこかしらにコピーして、インストールは終了。
_Releases - gokcehan/lf - GitHub
リリース版の r31 を入手。Windowsの場合、lf-windows-386.zip と lf-windows-amd64.zip の2つがある。今回は32bit版(386版)を使ってみた。
解凍すると、中に lf.exe だけが入っている。パスが通っているどこかしらにコピーして、インストールは終了。
◎ 使い方 :
DOS窓(cmd.exe)を開いて lf と打ち込めば起動する。
- カーソルキーの上下で、同階層の中で移動。
- カーソルキーの右で、現在カーソルがあるフォルダ内に入る。
- カーソルキーの左で、親フォルダに移動。
- qキーで終了。
- $キーで、一番下にシェル(Windowsの場合、cmd.exe)が開く。例えば $ を打った直後に ruby hoge.rb 等、DOS窓上でコマンドやプログラム名を打ち込むのと同様の入力をして実行したりできる。
◎ lfcd.cmd を導入 :
qキーを押して終了すると、起動時に居たディレクトリ(フォルダ)に戻ってしまう。開いていたディレクトリをカレントディレクトリにしつつ終了するようにしたい。そんな時は lfcd.cmd を使える。
_lf/etc at master - gokcehan/lf - GitHub
lfcd.cmd を入手して、パスの通ってる場所に置いてから、lfcd と打って実行すると、lf の終了時に開いていたディレクトリをカレントディレクトリにしながら終了できる。
ちなみに、DOS窓(cmd.exe)ではなく Powershell上で使う場合、おそらく lfcd.ps1 が使えそうな気がする。
_lf/etc at master - gokcehan/lf - GitHub
lfcd.cmd を入手して、パスの通ってる場所に置いてから、lfcd と打って実行すると、lf の終了時に開いていたディレクトリをカレントディレクトリにしながら終了できる。
ちなみに、DOS窓(cmd.exe)ではなく Powershell上で使う場合、おそらく lfcd.ps1 が使えそうな気がする。
◎ 設定ファイルの在り処 :
設定ファイル lfrc を編集することで、キーに何を割り当てるかを変更できたりするらしい。
_lf command - github.com/gokcehan/lf - Go Packages
上記ページによると、設定ファイル lfrc は、Windows の場合、C:\Users\<user>\AppData\Local\lf\lfrc にあることになっているらしい。
例えば、デフォルトでは eキーを叩くとエディタ(vim)が開く設定になっているけれど、以下のように書き換えればメモ帳が起動するようになる。はず。
_lf command - github.com/gokcehan/lf - Go Packages
上記ページによると、設定ファイル lfrc は、Windows の場合、C:\Users\<user>\AppData\Local\lf\lfrc にあることになっているらしい。
例えば、デフォルトでは eキーを叩くとエディタ(vim)が開く設定になっているけれど、以下のように書き換えればメモ帳が起動するようになる。はず。
# map e $vim %f% map e $notepad %f%
◎ プロセスが残り続ける :
DOS窓(cmd.exe)上で lf を使っていると、時々何かの拍子にDOS窓自体が落ちてしまった。実際には cmd.exe の下にぶら下がった状態で lf.exe のプロセスが残り続けて、しかしデスクトップ上には出てこない状態になる。
例えば lf を実行中、任意のテキストファイルの上で e キーを押すと、本来ならエディタとして vim が開くはずだけど、出てこない。DOS窓が消えて、プロセスだけが残り続ける。ちなみに残り続けるプロセスには -server のオプションがつけられている状態。
Windwosターミナル上で lf を実行してみたところ、そちらなら eキーを押してもエディタが開くし、エディタを閉じてもWindowsターミナルに戻ってきた。また、PowerShell 7.3.8上で lf を実行してみたところ、そちらも同様に落ちなかった。
どうやら cmd.exe 上で動かすと正常動作してくれないようだなと…。いや、Windowsターミナルから cmd.exe を呼んで動かす分には正常動作するわけで…。よくわからん…。
その後も試用していたら、qキーを押して終了したつもりが、その後も lf.exe のプロセスが残り続けることに気づいた。これは、DOS窓でも、Windowsターミナルでも、PowerShellでも、どこで動かしても同じようにプロセスが残る。
謎のプロセスが残り続けるのは気味が悪い。そもそも、cmd.exe 上で使えることを期待して試用してみたのに、正常動作しないのでは…。
関連情報を探していたら、わざとサーバ的なプロセスを残しているらしいと分かってきた。何故にそんなことをするのか…。いやまあ、なんか理由があるっぽいけど。
_'q' quit backgrounds the process on windows, lf.exe remains running - Issue #106 - gokcehan/lf - GitHub
_lf -server doesn't quit automatically - Issue #177 - gokcehan/lf - GitHub
_lf command - github.com/gokcehan/lf - Go Packages
とりあえず、サーバを落としたかったら以下のどちらかを打て、とのこと。
打ってみたら、たしかに残ってたプロセスが終了してくれた。"quit" では消えなかったプロセスも、"quit!" なら消えてくれた。"quit!" は、接続してるクライアントにも "quit" を送ってから、サーバも "quit" する模様。
例えば lf を実行中、任意のテキストファイルの上で e キーを押すと、本来ならエディタとして vim が開くはずだけど、出てこない。DOS窓が消えて、プロセスだけが残り続ける。ちなみに残り続けるプロセスには -server のオプションがつけられている状態。
Windwosターミナル上で lf を実行してみたところ、そちらなら eキーを押してもエディタが開くし、エディタを閉じてもWindowsターミナルに戻ってきた。また、PowerShell 7.3.8上で lf を実行してみたところ、そちらも同様に落ちなかった。
どうやら cmd.exe 上で動かすと正常動作してくれないようだなと…。いや、Windowsターミナルから cmd.exe を呼んで動かす分には正常動作するわけで…。よくわからん…。
その後も試用していたら、qキーを押して終了したつもりが、その後も lf.exe のプロセスが残り続けることに気づいた。これは、DOS窓でも、Windowsターミナルでも、PowerShellでも、どこで動かしても同じようにプロセスが残る。
謎のプロセスが残り続けるのは気味が悪い。そもそも、cmd.exe 上で使えることを期待して試用してみたのに、正常動作しないのでは…。
関連情報を探していたら、わざとサーバ的なプロセスを残しているらしいと分かってきた。何故にそんなことをするのか…。いやまあ、なんか理由があるっぽいけど。
_'q' quit backgrounds the process on windows, lf.exe remains running - Issue #106 - gokcehan/lf - GitHub
_lf -server doesn't quit automatically - Issue #177 - gokcehan/lf - GitHub
_lf command - github.com/gokcehan/lf - Go Packages
とりあえず、サーバを落としたかったら以下のどちらかを打て、とのこと。
lf -remote "quit" lf -remote "quit!"
打ってみたら、たしかに残ってたプロセスが終了してくれた。"quit" では消えなかったプロセスも、"quit!" なら消えてくれた。"quit!" は、接続してるクライアントにも "quit" を送ってから、サーバも "quit" する模様。
[ ツッコむ ]
以上です。