Terminal pogryzł człowieka: lf

Tak. Dobrze Państwo przeczytaliście. Lf, nie ls. Co się kryje za tym skrótem? To takie oczywiste – List Files. Brzmi nudnie? Proszę tylko spojrzeć na formułę tego narzędzia i sposób komunikacji z użytkownikiem. To rasowy i tekstowy menedżer plików.

Lf w akcji
Skoro są przeróżne menedżery plików, po co komu lf? Ten projekt czerpie garściami z innego o nazwie ranger. Niemniej dokłada nieco od siebie. A może inaczej – uzupełnia funkcje rangera o elementy których brakowało autorowi. Tym sposobem lf to małe, zwinne narzędzie, które poprzez prostą konfigurację i nieskomplikowaną składnię znacząco poprawi nasz komfort nawigowania pomiędzy plikami.

Po przeglądnięciu możliwości lf na pierwszy plan wysuwa się jego architektura serwer/klient do wymiany plików, współpraca z linią komend, konfigurowane skróty klawiszowe (vi), filtrowanie wyświetlanej listy (kolorowanie, rozpoznawanie plików. Czy to niewiele? Niekoniecznie. Program dzięki temu jest niewielki, działa błyskawicznie i całość mieści się w jednym pliku binarnym (bez zależności).

Zatem uruchamiamy lf i… I wykorzystując intuicję za pomocą strzałek góra/dół możemy przemieszczać się po liście plików, a strzałkami lewo/prawo przechodzić lub wychodzić z katalogów. Jeżeli prawej strzałki użyjemy na pliku, system spróbuje go otworzyć (plik). O ile będzie to coś obsługiwane.

Póki co nie ma szału, prawda? Jednak warto zapoznać się z lf -doc by zmienić zdanie. Choćby lista najbardziej podstawowych skrótów klawiszowych:

up                    (default 'k' and '<up>')
half-up               (default '<c-u>')
page-up               (default '<c-b>' and '<pgup>')
down                  (default 'j' and '<down>')
half-down             (default '<c-d>')
page-down             (default '<c-f>' and '<pgdn>')
updir                 (default 'h' and '<left>')
open                  (default 'l' and '<right>')
quit                  (default 'q')
top                   (default 'gg' and '<home>')
bottom                (default 'G' and '<end>')
toggle                (default '<space>')
invert                (default 'v')
unselect              (default 'u')
copy                  (default 'y')
cut                   (default 'd')
paste                 (default 'p')
clear                 (default 'c')
redraw                (default '<c-l>')
reload                (default '<c-r>')
read                  (default ':')
shell                 (default '$')
shell-pipe            (default '%')
shell-wait            (default '!')
shell-async           (default '&')
search                (default '/')
search-back           (default '?')
search-next           (default 'n')
search-prev           (default 'N')
mark-save             (default 'm')
mark-load             (default "'")

I już widać, że łatwo możemy pliki zaznaczyć do skopiowania (klawisz y), wkleić je w inne miejsce (klawisz p), wywołać linię komend (klawisz $), przekierować nazwę pliku (listę) do linii komend (klawisz %), wyszukać (pod klawiszem /), itp.

Do trybu tekstowe przekazywane są też inne zmienne:

$f   current file
$fs  selected file(s) separated with 'filesep'
$fx  current file or selected file(s) if any
$id  id number of the client

Niemniej, aby wykorzystać w pełni uroki konfiguracji skrótów klawiszowych, tworzenia własnych akcji, itp. Trzeba zdać sobie też sprawę z tego, że to dość specjalistyczne narzędzie.

Źródła programu możemy pobrać ze strony projektu na Github. Tam też umieszczone są gotowe prekompilowane binarki z lf, którą to binarkę wystarczy pobrać, rozpakować i uruchomić program (a potem nawet może wkomponować w /usr/bin/).