Az lf egy rangerre hajazó fájlkezelő, de annál lényegesen gyorsabb és stabilabb, a koncepció alapja a minimalizmus. Az lf minimális funkcionalitással bír (gyk. a coreutils köré épülve), de minden megoldható vele, ehhez viszont komolyan hekkülni kell, tehát a "bekapcsolom és használom" típusú felhasználók itt abba is hagyhatják az olvasást. Gyakorlatilag az lfrc konfigurációs állományban történik minden, parancsokat, billentyűkötéseket definiálhatunk egy shell szkript formájában.
Előnézetek generálására is lehetőségünk van, külső szkriptet, vagy hozzám hasonlóan a kimondottan az lf-hez készült remek ctpv-t használva (Debian alatt a fordításához a libmagic-dev és a libssl-dev csomagok kellenek), elérhető itt: https://github.com/NikitaIvanovV/ctpv
A fájlok megnyitása a rendszer alapértelmezett programjaival történik (én így használom), de lehetőség van a ranger-féle rifle használatára is (export OPENER='rifle').
Nézzük az lfrc fájlomat!
# Berus lfrc # ─────────────────────────────── # Általános beállítások # ─────────────────────────────── set hidden true # rejtett fájlok mutatása alapból set preview true # előnézet panel engedélyezése # set icons true # ikonok bekapcsolása (külön icons fájllal) set ignorecase true # kis/nagybetű ne számítson set scrolloff 3 # 3 sor margó a kurzor körül # set ratios 1:2 # bal panel (könyvtárfa) : jobb panel (előnézet) set info size:time # infósáv: fájlméret + módosítási idő set dircounts true # könyvtárakban fájlok számát is írja ki set sortby natural # természetes (emberi) rendezés set reverse false # rendezés növekvő legyen set number # sorszám be set drawbox true # keret be set incsearch # keresés gépeléskor # Shell beállítása set shell bash set shellopts '-eu' set ifs "\n" # Prompt formátum (felső sor) set promptfmt "\033[1;32m%u@%h\033[0m:\033[1;34m%d\033[0m %f" # ─────────────────────────────── # Billentyűleképezések # ─────────────────────────────── # Alap navigáció map <c-l> redraw map <esc> clear map <space> toggle map <insert> toggle map u unselect map * invert map zh set hidden! map <enter> open # Fájlműveletek map <f-5> copy map <f-6> cut map <f-9> paste map <f-8> delete map <delete> delete map <f-2> rename map a rename map R reload # Shell parancsok map E $gvim $f # aktuális fájl megnyitása szerkesztővel map e $vim $f # aktuális fájl megnyitása szerkesztővel map <f-4> $vim $f # aktuális fájl megnyitása szerkesztővel map O $xdg-open $f # megnyitás alapértelmezett alkalmazással map <f-3> $most $f # fájl megtekintése lapozóval map s $bat --style=plain --paging=always $f # színes megtekintés (bat-tal) # Kijelöltek tömörítése/tömörítés kicsomagolása # map za %zip -r archive.zip $fx # map zx %unzip $f # map zt %tar -czvf archive.tar.gz $fx # map zu %tar -xzvf $f # Kicsomagolás (atool) cmd extract ${{ set -f atool -x $fx }} # Fájl kukába helyezése (trash-cli kell hozzá) cmd trash %trash-put $fx map D trash # Gyors ugrás könyvtárakhoz map gb cd ~ map gc cd ~/.config map gp cd ~/Adatok/dotfiles/home/berus/ # ─────────────────────────────── # Egyéni parancsok # ─────────────────────────────── # Gyors keresés fzf-fel cmd fzf_jump ${{ res="$(find -L . -mindepth 1 | fzf)" [ -n "$res" ] && lf -remote "send $id select \"$res\"" }} map f fzf_jump # Könyvtár létrehozása cmd mkdir %mkdir "$@" map m push :mkdir<space> map <f-7> push :mkdir<space> # Beillesztés felűlírással cmd overwrite &{{ set -f mode=$(head -1 ~/.local/share/lf/files) list=$(sed 1d ~/.local/share/lf/files) set -- _ $list; shift [ $# -gt 0 ] || exit case $mode in copy) rsync -r "$@" ./ ;; move) rsync -r --remove-source-files "$@" ./ ;; esac lf -remote 'save\nmove\n' lf -remote "send $id load" lf -remote "send $id echo \"\033[0;32mpasted $# file(s)\033[0m\"" }} map o overwrite # Gyors előnézet generálás (ctpv használatával) set previewer ctpv set cleaner ctpvclear &ctpv -s $id &ctpvquit $id
Az "Általános beállítások" rész szerintem elég egyértelmű, a set ratios 1:2 paranccsal pl. kétpaneles módra válthatunk.
A promptnál ANSI színkódokat használunk, a mutatók pedig a következőek:
%u - Felhasználónév
%h - Hostname
%d - Aktuális könyvtár
%f - Kijelölt fájl(ok)
%t - Kijelölt fájlok száma
%s - Könyvtárban lévő fájlok száma
%p - Kijelölés százalékban
"Billentyűleképezések": formátum map gomb parancs. Teljesen felforgathatjuk az alapértelmezéseket, ahogy én meg is tettem.
Alapvető navigáció (eredeti):
Nyíl billentyűk vagy h,j,k,l - Navigálás a fájlok között
Enter - Belépés könyvtárba vagy fájl megnyitása
Backspace vagy h - Visszalépés szülő könyvtárba
gg - Ugrás a lista elejére
G - Ugrás a lista végére
Space - Fájl kijelölése/megjelölése
y - Kijelölt fájlok másolása
d - Kijelölt fájlok áthelyezése
Del - Kijelölt fájlok törlése
R - Fájl/mappa átnevezése
/ - Fájl keresése
n - Következő találat
N - Előző találat
A kuka használatához a trash-cli programra van szükségünk. Nálam a D billentyű a kukába helyez, Del ill. F8 töröl.
"Egyéni parancsok": az fzf gyorskeresés és könyvtár létrehozása elég egyértelmű. A "Beillesztés felülírással" már érdekesebb téma.
Alapértelmezésben ha már létező fájlt másolunk nem kérdez rá hogy mit tegyen, egyszerűen átnevezi a fájlt és a meglévő mellé írja; ez így elég kényelmetlen tud lenni.
Az itt látható hekkülés ezt a problémát oldja meg, o billentyűre felül írja a meglévő fájlt (az rsync kell hozzá; lehet nálam okosabbaknak van erre egyszerűbb megoldása, de ez nekem müxik).
Belső parancsok futtatásához : gomb, shell parancsokhoz $.
Kedvcsinálónak ennyi elég is, szkript írogatásban járatosaknak a végtelen lehetőségek tárháza, a többiek meg a 2. mondatnál úgyis abbahagyták az olvasást; szerintem egy remek programocska remek koncepcióval, én szinte folyamatosan bizergálom, hogy még kézreesőbb legyen!
Az lf GitHub oldala: https://github.com/gokcehan/lf
Berus