Mélyvíz, szóval arra gondoltam (Laci barátom után szabadon, i3 ismertető), hogy (lehet) belekezdenék egy olyan sorozatba, ahol szerintem hasznos alkalmazásokat, eszközöket mélyebben körüljárnánk. Ez persze nem jelenti azt, hogy ki akarnám váltani a man-t, vagy az alkalmazás weboldalát, de az egyszerű kedvcsinálónál alaposabban bemutatnám a szerintem hasznos funkciókat, eljárásokat.
Első (és talán nem utolsó) áldozatunk a Vifm, a kétpaneles fájlkezelők klubjából! Volt szó az oldalon a Midnight Commanderről, én felhánytorgattam az LFM-et, de valahogy Vifm kimaradt, pedig az egyik nagy kedvencem, egy igen sokoldalú jószág; akkor nézzük!
A Vifm kulcsfontosságú jellemzője, hogy a felhasználói munkamenetet a Vim-hez hasonló, több üzemmódos modell alapján szervezi meg. Ez a megközelítés lényegesen eltér a klasszikus, sorban egymást követő parancsokat végrehajtó fájlkezelőktől, és lehetővé teszi a sokkal intenzívebb, billentyűzet vezérelt interakciót. Három alapvető mód található a Vifmben: Normál mód, Parancssoros mód és Vizuális mód. Az alapértelmezett mód a Normál mód, ahonnan a felhasználó elindul, és innen hajtja végre az alapműveleteket, navigálhat a fájlrendszerben, és aktiválhat más üzemmódokat.
A Parancssoros mód a : (kettőspont) billentyű lenyomásával érhető el a Normál módból. Ebben a módban a felhasználó be tud írni parancsokat, amelyek a Vifm funkcióit hívják meg. Ezek a parancsok tartalmazhatnak argumentumokat, például fájlneveket vagy beállításokat. A módból való kilépéséhez használható a Escape vagy a Ctrl-C billentyűkombináció. Ez a mód hasonló a Vim parancsmódjához, és lehetővé teszi a Vifm viselkedésének dinamikus módosítását anélkül, hogy el kellene hagynunk a fájlkezelőt.
A Vizuális mód a v billentyű lenyomásával indítható, és célja a fájlok kijelölése tömeges műveletekhez. Miután kijelöltünk egy vagy több elemet (pl. lefelé mozgással j billentyűvel), bármely normál művelet (pl. dd törlés) csak a kijelölt fájlokkal fog végre hajtódni. Ez a mechanizmus a fájlműveletek hatékonyságát növeli, mivel nem kell manuálisan minden egyes fájlt kijelölni a művelet végrehajtása előtt.
A navigáció a Vifmben teljesen a billentyűzeten történik. A fő irányítóparancsok a h, j, k és l billentyűk, melyek rendre balra, le, fel és jobbra mozgatnak. A l vagy Enter billentyű egyszeri lenyomásával beléphetünk egy könyvtárba, vagy ha fájlról van szó, akkor annak megnyitása történik. Természetesen a hagyományos kurzormozgató "nyíl" billentyűk is működnek. A panelek közötti váltáshoz a Space (ezt én megváltoztatom azonnal "kijelölő" billentyűnek) vagy a Tab billentyű használható. A lista elejére és végére ugrani a gg és G kombinációk segítségével lehet. Ezek a parancsok a Vim-ből jól ismertek, ezért az abban már jártas felhasználók rövid időn belül otthonosan érezhetik magukat.
A fájlműveletek direktek és hatékonyak. A fájlok másolásához (yank) a yy parancsot használjuk, majd a p billentyűvel beilleszthetjük őket másolásként, vagy a P billentyűvel mozgathatjuk őket. A már létező fájlok felűlírására a program rákérdez. A fájlok törlése a dd paranccsal történik, amely a program alapértelmezett kukájába (általában ~/.local/share/vifm/Trash) helyezi őket. Ha véglegesen akarjuk törölni őket, használjuk a DD parancsot. Az átnevezés cw billentyűkombinációval történik. Ez a direkt, parancs-alapú műveletvégzés jelentősen felgyorsítja a mindennapi fájlkezelést, hiszen elkerülhető a “kattintgatós” interakció. Alapértelmezésben a Midnight Commanderhez hasonló működés is elérhető az F3-F8 billentyűkkel.
Az indítási lehetőségek is rugalmasak. Terminálból egyszerűen vifm futtatásával nyithatjuk meg az aktuális könyvtárat. Két könyvtárat külön panelekben megnyitni pedig vifm /útvonal/könyvtár /útvonal/könyvtár formában lehetséges. A kilépéshez a :q (:qw) vagy a ZZ (ZQ) parancs használható.
A Vifm viselkedésének testreszabásához a vifmrc nevű konfigurációs fájlt használjuk. Ez a fájl tartalmazza az összes set parancsot, amelyek meghatározzák a beállításokat, illetve a felhasználó által definiált egyéni parancsokat, billentyűlekezeléseket és más beállításokat. A fájl a ~/.config/vifm/vifmrc elérési úton található meg.
A vifmrc fájlban a beállítások főként set parancsok formájában jelennek meg. Ezek segítségével kapcsolhatjuk be vagy ki a funkciókat, vagy értéket adhatunk nekik. A set parancsok sorrendje néha fontos, különösen a fájltípushoz rendelt parancsok esetében (filetype, filextype), mivel a Vifm a beállításokat felsorolja, és az első találatot használja. Példa egy egyszerű beállításra: set incsearch engedélyezi a keresés közbeni elérést, így amint begépeljük a keresőkifejezést, a Vifm lépked a találatok között. A beállítások típusai különbözőek lehetnek: logikai opciók (set option, set nooption, set invoption), sztring értékek (set option="value"), vagy numerikus értékek (set history=100).
A Vifm képes munkamenetadatainak mentésére is, amelyet a vifminfo.json fájl tárol. Ez a fájl automatikusan frissül, ha a vifminfo opció be van kapcsolva. Tartalmazhatja például az előzményeket, a mentett könyvtárakat, a panelek kurzorpozícióit, stb.. A pontos információk, hogy mik kerülnek elmentésre, a vifminfo opció értékétől függ. Például a set vifminfo=dhistory,savedirs csak a munkamenetben történt könyvtár megnyitásokat és az aktuális könyvtárakat rögzíti. A munkamenet adatok manuális mentése a :write paranccsal történik, kilépéskor :wq vagy ZZ, kihagyás :q! vagy ZQ paranccsal lehetséges. Létezik továbbá a --no-configs indítási opció is, amely letiltja a vifmrc és vifminfo fájlok betöltését, ami hasznos lehet hibakeresés során.
Könyvjelzők: a könyvjelzők segítségével pillanatok alatt elérhetünk a gyakran látogatott könyvtárakba. A könyvjelzőknek két típusa van: ideiglenes és állandó. Az ideiglenes könyvjelzőkhöz egy betűt kell hozzárendelnünk az aktuális könyvtárhoz az ' (apostrof) és után következő betűvel, például 'm menti az aktuális könyvtárat a ‘m’ könyvjelzőhöz. Ezt követően '' (két apostrof) lenyomásával visszatalálunk oda. Az állandó könyvjelzőkhöz használjuk a :bmark parancsot, például :bmark példa menti az aktuális könyvtárat a ‘példa’ nevű könyvjelzőhöz. Ezek a könyvjelzők a Vifm munkameneten keresztül érvényesek, de ha a vifminfo opció be van kapcsolva, akkor a vifminfo.json fájlban is elmentésre kerülnek, így a következő indításkor is megmaradnak.
Ugrás egy könyvjelzőhöz: :bmgo példa. A mentett könyvjelzőinket a :bmarks paranccsal listázhatjuk, :delbmarks paranccsal pedig törölhetjük a már feleslegeseket.
A Vifm nagyon rugalmas a fájlok megjelenítésében, a :sort parancs segítségével a fájllistát különböző szempontok szerint (név, méret, dátum, kiterjesztés, stb.) rendezhetjük át, a választáshoz felugró "ablakot" kapunk.
A Vifm a fájltípusokhoz rendelt alkalmazások megnyitását is támogatja, ami a filetype és filextype parancsok révén történik. A filetype parancsok általánosak, míg a filextype lehetővé teszi a reguláris kifejezések használatát, így pl. egy adott mintájú fájlokhoz lehet külön asszociációt definiálni. Ezek a parancsok meghatározzák, hogy milyen program fut le, amikor egy fájlt megpróbálunk megnyitni a Vifmben. A filetype parancs általános fájlkiterjesztésekre vonatkozik, például: filetype *.jpg feh %f arra utasítja a Vifmet, hogy a JPEG képeket a feh képnézegetővel nyissa meg. Itt %f egy makró, amely kiterjed a kurzor alatti fájl teljes elérési útjára. A filextype hasonló, de reguláris kifejezéseket is használhat, ami nagyobb rugalmasságot kínál. Például, ha csak a /home/berus/ könyvtárban levő PDF fájlokat szeretnénk külön kezelni, akkor a filextype //^/home/berus/[^/]*\.pdf$// atril %f parancs használható. A sorrend itt is kritikus, a Vifm felsorolja a parancsokat, és a legelső, ahol a fájl neve illeszkedik, az kerül végrehajtásra.
Az egyéni parancsok (:command parancs) még rugalmasabb eszköz a külső parancsok integrálására. Ezek olyan rövidített parancsok, amelyek saját, összetett shell parancsot futtatnak le. Például, ha gyakran a lemezterület felhasználását szeretnénk ellenőrizni egy adott könyvtárban, akkor definiálhatunk egy :df parancsot: :command! df df -h %m. Itt %m a makró, amely kiterjed a jelenlegi panel aktuális könyvtárára.
A paraméterezés a makrók segítségével történik, amelyek különböző változókat tartalmaznak, amelyeket a Vifm kiterjeszt a parancs végrehajtása során. Ezek közül a legfontosabbak: * %f: a kijelölt fájlok teljes elérési útjának listája; * %c: a kurzor alatti fájl teljes elérési útja; * %d: a panel aktuális könyvtára; * %F, %C, %D: ugyanezek, de idézőjelekkel együtt, ami hasznos, ha a fájlnevek tartalmaznak szóközt; * %m: a jelenlegi panel aktuális könyvtára; * %a: összes kijelölt fájl elérési útja egy sorban, szóközzel elválasztva.
Ezeknek a makróknak a kombinálása lehetővé teszi igazán összetett parancsok létrehozását. Például egy :zip parancs, amely a kijelölt fájlokat egy ZIP archívumba csomagolja: :command! zip zip -r %c.zip %f. Itt a %c a kurzor alatti fájl neve lesz, amit a ZIP nevéül használunk, míg a %f a kiválasztott fájlok listája.
A rejtett fájlok, amelyek a Unix/Linux rendszerekben ponttal kezdődnek, alapértelmezetten nem jelennek meg a listában. A Vifm a za billentyűkombinációval vált a megjelenítési módok között (a zo és zm is használható de nehézkes).
Színsémák: a Vifm képes különböző terminálok palettájához igazodni, de a legjobb eredményhez 256-színű terminál ajánlott. A színsémákat .vifm kiterjesztésű fájlokban tároljuk, amelyek a ~/.config/vifm/colors/ könyvtárban helyezkednek el. A telepített színsémák közül a :colorscheme séma paranccsal választhatunk. A Vifm-ben alapértelmezettként szerepel egy Default-256 színséma, amely 256 színt támogató terminálokra lett kialakítva, míg 16-színű terminálok esetén az alapértelmezett a Default lesz.
Panelek kezelésére szolgáló parancsok: válthatunk függőleges és vízszintes felosztás között, :split és :vsplit parancsok, az :only pedig egypaneles megjelenítésre vált (a másik panel nem záródik be, Tab-bal tudunk váltani rá továbbra is).
Kereséshez használható parancsok: :locate mire gyors keresés az egész fájlrendszerben (locate adatbázis alapján); :find [minta] rekurzív keresés az aktuális könyvtárban (find parancs alapján); :grep [kifejezés] keresés a fájlok tartalmában (grep alapján); :filter [minta] szűri a fájlokat a megadott mintára (regex alapján, üres: szűrés kikapcsolása). Természetesen a vim-ben megszokot / metódus is működik (a fájlnevekben keres)!
Rendszer parancsok: :!parancs futtat egy shell parancsot (pl. :!ls -la); :shell elindít egy alárendelt shell-t; :suspend felfüggeszti a vifm-et (fg paranccsal folytatható).
Billentyűkötések (mappings) lehetővé teszik, hogy saját billentyűparancsokat definiáljunk a Vifm-ben (vifmrc), a különböző működési módokhoz is köthetjük őket. A parancsokat önmagukba kiadva megnézhetjük az aktuális kiosztásokat: :nmap normál mód, :vmap vizuális mód, :cmap parancssor mód, :viewmap nézet mód. Megkülönböztetünk rekurzív (pl. nmap) és nem rekurzív (pl. nnoremap) kötéseket, az utóbbi használata javasolt a legtöbb esetben, mert biztonságosabb, nem oldja fel újra a kötést. Hogy értsük: nmap j k és nmap k j parancsok végtelen ciklust okozhatnak, mert rekurzívan feloldják egymást. Kötés törlése az :unmap paranccsal történik.
A fontosabb kulcsnevek: <cr> Enter; <esc> Escape; <space> Szóköz; <tab> Tabulátor; <bs> Backspace; <del> Delete; <left>, <right>, <up>, <down> Iránybillentyűk; <f1> – <f12> Funkcióbillentyűk; <nop> letilt egy parancsot.
Néhány példa a saját kombinációimból: kijelölés space billentyűvel nnoremap <space> tj; összes kijelölése nnoremap * :%select<cr>; egyszeűbb kilépés nnoremap q ZQ, nnoremap Q ZZ. Ha elég lassúak vagyunk a billentyűparancsok kiadása közben, a Vifm súgót jelenít meg nekünk az inaktív panelban.
Fájl előnézetet az aktív panelban az e lenyomásával kérhetünk (görgethető, kilépés q), ha a nem aktív panelban szeretnénk megjeleníteni w (nem görgethető, kilépés w).
A :compare paranccsal összehasonlíthatjuk a két panel tartalmát. Különböző színekkel jelöli (hogy milyenekkel az a színsémától függ) csak az aktív panelen, csak az inaktív panelen, mindkettőn, és a mindkettőn létező, de valamiben eltérő (pl. méret) fájlokat. Megadhatjuk hogy mit figyeljen az összehasonlításkor, size méret alapján dönt az azonosságról, mtime módosítási idő alapján, ctime változtatási idő alapján, inode inode szám alapján (ritkán hasznos), content nem hasonlítja össze a fájlok tartalmát, csak a metaadatokat; pl. :set compareoptions=size,mtime.
Kuka (set trash): a dd parancs valójában nem töröl (csak a DD), hanem a Vifm saját kukájába (~/.local/share/vifm/Trash, megváltoztatható, de nem javaslom, pl. set trashdir=~/.vifm-trash) mozgatja a fájlokat. A kuka tartalma az :lstrash paranccsal listázható, az :empty paranccsal üríthető. A fájlok visszaállíthatóak, ehhez navigáljunk a ~/.local/share/vifm/Trash könyvtárba, álljunk a fájlra és adjuk ki a :restore parancsot.
A Vifm-ben elvileg lehetséges előnézetet generálni a különböző képfájlokhoz, de mivel ennek sikeressége nagyban függ a kapcsolódó külső programok verziójától (ueberzug, sixel, stb.), ezért ezt most nem tárgyaljuk, mint ahogy az egyéb hekkeléseket sem, mint például az fzf integrálását.
Akkor elérkezett az idő, hogy megnézzük a vifmrc konfigurációs állományomat!
" vim: filetype=vifm : " Berus konfigurációs fájl. " Az idézőjel (") a sor elején megjegyzést jelöl. " Az üres sorok figyelmen kívül maradnak. " ------------------------------------------------------------------------------ " Fő beállítások " ------------------------------------------------------------------------------ " Parancs, amivel fájlokat szerkesztünk különféle helyzetekben. Az alapértelmezett a vim. " Ha más vi klónt szeretnél használni, például vis vagy vile, " ezt a beállítást kell megváltoztatnod. if executable('vim') set vicmd=vim elseif executable('nvim') set vicmd=nvim elseif executable('vis') set vicmd=vis elseif executable('vile') set vicmd=vile elseif $EDITOR != '' echo 'Megjegyzés: a(z) `'.$EDITOR.'` szerkesztőt használom' let &vicmd = $EDITOR endif " Ez arra készteti a vifm-et, hogy saját maga végezze a fájlműveleteket ahelyett, " hogy a szabványos segédprogramokra (pl. `cp`) támaszkodna. Bár a `cp` és társai " univerzálisabbak, nagy mennyiségű fájl esetén sokkal lassabbak, és nem " támogatják a folyamat előrehaladásának mérését. set syscalls " Kuka könyvtár " Alapértelmezés szerint a dd vagy :d paranccsal törölt fájlok a kukába kerülnek. " Ha ezt megváltoztatod, nem tudod a fájlokat úgy áthelyezni, hogy kitörlöd őket, " majd p-vel bemásolod az új helyre. " Azt javaslom, hogy ezt addig ne módosítsd, amíg nem vagy otthon a vifm-ben. set trash " Mit mentsen automatikusan a vifm újraindításakor. Ha nem akarod, " hogy a vifm megjegyezze az utoljára látogatott könyvtárakat, " vedd ki a "savedirs" értéket. set vifminfo=dhistory,chistory,state,tui,shistory, \phistory,fhistory,dirstack,registers,bookmarks,bmarks " Ennyi könyvtárat tároljon a könyvtár-előzményekben. set history=100 " Szimbolikus linkek automatikus feloldása l vagy Enter lenyomásakor. set nofollowlinks " Természetes rendezés (verziószámok a szövegben), könyvtárméret helyett elemek száma. set sortnumbers set dirsize=nitems " A visszavonható változtatások maximális száma. set undolevels=100 " Vim formátumú súgófájl használata (kiemelés és „hiperhivatkozások”). " Ha inkább sima szöveges súgót szeretnél, állítsd be a novimhelp-et. set vimhelp " Ha szeretnéd, hogy futtatható fájlokat Enterrel, l-lel vagy Jobb nyíllal " el tudj indítani, állítsd ezt be. set norunexec " A fájllistában megjelenő idő formátuma. Például: " TIME_STAMP_FORMAT=%m/%d-%H:%M " Részletekért lásd: man date vagy man strftime. set timefmt='%Y/%m/%d %H:%M' " Találatok listázása tab-kiegészítéskor parancssor módban set wildmenu " Kiegészítések megjelenítése felugró ablakban, leírással set wildstyle=popup " Javaslatok megjelenítése normál, vizuális és nézet módban kulcsokra, " jelölőkre és regiszterekre (legfeljebb 5 fájl). Más nézetben is, ha elérhető. set suggestoptions=normal,visual,view,otherpane,keys,marks,registers " A keresési mintákban figyelmen kívül hagyja a kis- és nagybetű különbséget, " kivéve, ha van bennük legalább egy nagybetű. set ignorecase set smartcase " Ne emelje ki automatikusan a keresési találatokat set nohlsearch " Keresés gépelés közben (inkrementális keresés) set incsearch " Próbáljon kis távolságot hagyni a kurzor és a lista felső/alsó széle között set scrolloff=4 " Rejtett fájlok megjelenítése set dotfiles " Ne végezzen túl sok lekérést lassú fájlrendszereken if !has('win') set slowfs=curlftpfs endif " Egyedi állapotsor kinézet set statusline=" Tipp: %z%= %A %10u:%-7g %15s %20d " " Színsémák listája (az első, amit a terminál támogat, kerül használatra) colorscheme Default " ------------------------------------------------------------------------------ " Könyvjelzők " ------------------------------------------------------------------------------ " :mark jel /teljes/könyvtár/útvonal [fájlnév] mark h ~/ " ------------------------------------------------------------------------------ " Parancsok " ------------------------------------------------------------------------------ " :com[mand][!] parancsnév művelet " " Ezek a makrók használhatók a művelet részben: " %a – felhasználói argumentumok " %c – az aktuális fájl a kurzor alatt " %C – az inaktív panel kurzora alatti fájl " %f – kijelölt fájl(ok) " %F – az inaktív panel kijelölt fájlai " %b – ugyanaz, mint %f %F " %d – aktuális könyvtár neve " %D – inaktív panel aktuális könyvtárának neve " %r{x} – fájlok listája az {x} regiszterből " %m – a parancs menüablakban fut " %u – a parancs kimenetét fájllistaként használja " lásd `:help vifm-macros` és `:help vifm-filename-modifiers` továbbiakért command! df df -h %m 2> /dev/null command! diff vim -d %f %F command! zip zip -r %c.zip %f command! run !! ./%f command! make !!make %a command! mkcd :mkdir %a | cd %a command! vgrep vim "+grep %a" command! reload :write | restart full " ------------------------------------------------------------------------------ " Fájltípus-társítások " ------------------------------------------------------------------------------ " :filetype minta1,minta2 alapértelmezettprogram,program2 " :fileviewer minta1,minta2 konzolnézegető " " Az első bejegyzés az alapértelmezett program, ami a megfelelő fájlhoz tartozik. " A fájltípushoz tartozó további programok a :file paranccsal érhetők el. " A parancs makrók, mint %f, %F, %d, %D a parancsokban is használhatók. " A %a makrót figyelmen kívül hagyja. Ha % jelet akarsz, akkor %% kell. " Az alkalmazásnévben a szóközt escape-elni kell, pl.: QuickTime\ Player.app " Automatizált FUSE csatolásokhoz regisztrálni kell egy kiterjesztést " a következő formátumok egyikében: " " :filetype minták FUSE_MOUNT|mount_parancs %SOURCE_FILE %DESTINATION_DIR " " A %SOURCE_FILE és %DESTINATION_DIR futásidőben kerül kitöltésre. " " Pdf filextype {*.pdf},<application/pdf> zathura %c %i &, atril %c, xpdf %c fileviewer {*.pdf},<application/pdf> pdftotext -nopgbrk %c - " PostScript filextype {*.ps,*.eps,*.ps.gz},<application/postscript> \ {View in zathura} \ zathura %f, \ {View in gv} \ gv %c %i &, " Djvu filextype {*.djvu},<image/vnd.djvu> \ {View in zathura} \ zathura %f, \ {View in atril} \ apvlv %f, " Audio filetype {*.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus}, \<audio/*> \ {Play using ffplay} \ ffplay -nodisp -autoexit %c, \ {Play using MPlayer} \ mplayer %f, fileviewer {*.mp3},<audio/mpeg> mp3info fileviewer {*.flac},<audio/flac> soxi " Video filextype {*.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob, \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx, \*.as[fx]}, \<video/*> \ {View using ffplay} \ ffplay -fs -autoexit %f, \ {View using Dragon} \ dragon %f:p, \ {View using mplayer} \ mplayer %f, fileviewer {*.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob, \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx, \*.as[fx]}, \<video/*> \ ffprobe -pretty %c 2>&1 " Web filextype {*.html,*.htm},<text/html> \ {Open with dwb} \ dwb %f %i &, \ {Open with firefox} \ firefox %f &, \ {Open with uzbl} \ uzbl-browser %f %i &, filetype {*.html,*.htm},<text/html> links, lynx " Object filetype {*.o},<application/x-object> nm %f | less " Man page filetype {*.[1-8]},<text/troff> man ./%c fileviewer {*.[1-8]},<text/troff> man ./%c | col -b " Images filextype {*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm},<image/*> \ {View in sxiv} \ sxiv %f, \ {View in gpicview} \ gpicview %c, \ {View in feh} \ feh -FZ %d --start-at %d/%c 2>/dev/null, fileviewer {*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm},<image/*> \ identify %f " OpenRaster filextype *.ora \ {Edit in MyPaint} \ mypaint %f, " Mindmap filextype *.vym \ {Open with VYM} \ vym %f &, " MD5 filetype *.md5 \ {Check MD5 hash sum} \ md5sum -c %f %S, " SHA1 filetype *.sha1 \ {Check SHA1 hash sum} \ sha1sum -c %f %S, " SHA256 filetype *.sha256 \ {Check SHA256 hash sum} \ sha256sum -c %f %S, " SHA512 filetype *.sha512 \ {Check SHA512 hash sum} \ sha512sum -c %f %S, " GPG signature filetype {*.asc},<application/pgp-signature> \ {Check signature} \ !!gpg --verify %c, " Torrent filetype {*.torrent},<application/x-bittorrent> ktorrent %f & fileviewer {*.torrent},<application/x-bittorrent> dumptorrent -v %c " FuseZipMount filetype {*.zip,*.jar,*.war,*.ear,*.oxt,*.apkg}, \<application/zip,application/java-archive> \ {Mount with fuse-zip} \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR, \ {View contents} \ zip -sf %c | less, \ {Extract here} \ tar -xf %c, fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c " ArchiveMount filetype {*.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.tar.zst,*.tzst}, \<application/x-tar> \ {Mount with archivemount} \ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR, fileviewer *.tgz,*.tar.gz tar -tzf %c fileviewer *.tar.bz2,*.tbz2 tar -tjf %c fileviewer *.tar.xz,*.txz tar -tJf %c fileviewer *.tar.zst,*.tzst tar -t --zstd -f %c fileviewer {*.tar},<application/x-tar> tar -tf %c " Rar2FsMount and rar archives filetype {*.rar},<application/x-rar> \ {Mount with rar2fs} \ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR, fileviewer {*.rar},<application/x-rar> unrar v %c " IsoMount filetype {*.iso},<application/x-iso9660-image> \ {Mount with fuseiso} \ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR, " SshMount filetype *.ssh \ {Mount with sshfs} \ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND, " FtpMount filetype *.ftp \ {Mount with curlftpfs} \ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND, " Fuse7z and 7z archives filetype {*.7z},<application/x-7z-compressed> \ {Mount with fuse-7z} \ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR, fileviewer {*.7z},<application/x-7z-compressed> 7z l %c " Office files filextype {*.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx,*.ppt}, \<application/vnd.openxmlformats-officedocument.*, \application/msword, \application/vnd.ms-excel> \ libreoffice %f & fileviewer {*.doc},<application/msword> catdoc %c fileviewer {*.docx}, \<application/ \vnd.openxmlformats-officedocument.wordprocessingml.document> \ docx2txt.pl %f - " TuDu files filetype *.tudu tudu -f %c " Qt projects filextype *.pro qtcreator %f & " Directories filextype */ \ {View in caja} \ caja %f &, " Markdown filetype *.md glow -p %c " :filetype minták FUSE_MOUNT2|mount_parancs %PARAM %DESTINATION_DIR " " A %PARAM és %DESTINATION_DIR futásidőben kerül kitöltésre. " " Példa: " :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR " " A %PARAM értéke a fájl első sora, pl.: root@127.0.0.1:/ " " A %CLEAR hozzáadható, ha képernyőtörlést szeretnél a FUSE program futtatása előtt. " Létezik %FOREGROUND is, ami hasznos jelszóbekérésnél. " ------------------------------------------------------------------------------ " Panelkonfigurációs példák " ------------------------------------------------------------------------------ " Oszlopok testreszabása (levágott fájlnevek végére három pont) " set viewcolumns=-{name}..,6{}. " Függőleges elválasztó megjelenítése " set fillchars=vborder:│ " Fordítási és ideiglenes fájlok kiszűrése " filter! {*.lo,*.o,*.d,*.class,*.pyc,*.pyo,.*~} " ------------------------------------------------------------------------------ " Billentyűtérképezési példák " ------------------------------------------------------------------------------ " Shell indítása az aktuális könyvtárban nnoremap s :shell<cr> " Rendezési párbeszédablak nnoremap S :sort<cr> " Előnézeti ablak láthatóságának váltása nnoremap w :view<cr> vnoremap w :view<cr>gv if $DISPLAY && executable('gvim') " Fájl megnyitása meglévő gvim példányban nnoremap o :!gvim --remote-tab-silent %f<cr> " Fájl megnyitása új gvim példányban nnoremap O :!gvim %f<cr> endif " Fájl megnyitása háttérben, alapértelmezett programmal nnoremap gb :file &<cr>l " Rendszer vágólappal való együttműködés if has('win') " Az aktuális könyvtár útvonalának másolása Windows vágólapra, perjelekkel nnoremap yp :!echo %"d:gs!\!/! %i | clip<cr> " Az aktuális fájl útvonalának másolása Windows vágólapra, perjelekkel nnoremap yf :!echo %"c:gs!\!/! %i | clip<cr> elseif $WAYLAND_DISPLAY if executable('wl-copy') " Könyvtár útvonal másolása elsődleges és kiválasztási vágólapra nnoremap yd :!echo -n %d | wl-copy %i && \ echo -n %d | wl-copy -p %i<cr> " Fájl útvonal másolása elsődleges és kiválasztási vágólapra nnoremap yf :!echo -n %c:p | wl-copy %i && \ echo -n %c:p | wl-copy -p %i<cr> endif elseif $DISPLAY if executable('xclip') " Könyvtár útvonal másolása a vágólapra nnoremap yd :!echo %d | xclip %i<cr> " Fájl útvonal másolása a vágólapra nnoremap yf :!echo %c:p | xclip %i<cr> elseif executable('xsel') " Könyvtár útvonal másolása elsődleges és kiválasztási vágólapra nnoremap yd :!echo -n %d | xsel --input --primary %i && \ echo -n %d | xsel --clipboard --input %i<cr> " Fájl útvonal másolása elsődleges és kiválasztási vágólapra nnoremap yf :!echo -n %c:p | xsel --input --primary %i && \ echo -n %c:p | xsel --clipboard --input %i<cr> endif endif " Gyorsabb átnevezési billentyűk nnoremap I cw<c-a> nnoremap cc cw<c-u> nnoremap A cw " Mint fent, de a fájlkiterjesztés nélkül " nnoremap I cW<c-a> " nnoremap cc cW<c-u> " nnoremap A cW " Konzol nyitása az aktuális könyvtárban if $DISPLAY && executable('xterm') nnoremap ,t :!xterm &<cr> elseif $TERMINAL nnoremap ,t :!$TERMINAL &<cr> endif " Editor megnyitása a vifmrc szerkesztésére, majd beállítások újratöltése nnoremap ,c :write | edit $MYVIFMRC | restart full<cr> " gvim megnyitása a vifmrc szerkesztésére if $DISPLAY && executable('gvim') nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC &<cr> endif " Sortörés váltása ,w gombbal nnoremap ,w :set wrap!<cr> " Példa klasszikus kétpaneles fájlkezelő billentyűkre (less helyett ov) nnoremap <f3> :!ov %f<cr> nnoremap <f4> :edit<cr> nnoremap <f5> :copy<cr> nnoremap <f6> :move<cr> nnoremap <f7> :mkdir<space> nnoremap <f8> :delete<cr> " Midnight Commander-szerű billentyűk " Aktuális könyvtár megnyitása a másik panelben nnoremap <a-i> :sync<cr> " Kurzornál lévő könyvtár megnyitása a másik panelben nnoremap <a-o> :sync %c<cr> " Panelek felcserélése nnoremap <c-u> <c-w>x " Berus billentyűkiosztás " Rejtett fájlok nnoremap zh za " Kijelölés nnoremap <space> tj nnoremap ,m :mkdir<space> " Egyszeűbb ugrás nnoremap ű G " Könyvjelzőhöz ugrás nnoremap ú :bmgo<space> " Összes kijelölése nnoremap * :%select<cr> " nnoremap * ggVG<cr> " Egyszeűbb kilépés nnoremap q ZQ nnoremap Q ZZ " ag/rg használata grep helyett " set grepprg='ag --line-numbers %i %a %s' set grepprg='rg --vimgrep' " További hely hozzáadása a futtatható fájlok kereséséhez " let $PATH = $HOME.'/bin/fuse:'.$PATH " Bizonyos gyorsbillentyűk tiltása " nnoremap <left> <nop> " Az aktuális példány IPC nevének exportálása környezeti változóként, " majd későbbi kommunikációhoz való használata. " " Például shell scriptben így: " vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'" " " let $VIFM_SERVER_NAME = v:servername " screen/tmux támogatás bekapcsolása " screen! " ------------------------------------------------------------------------------ " Ikon díszítések példa " ------------------------------------------------------------------------------ " https://github.com/cirala/vifm_devicons " Sorszámozás set number
Szokásomhoz híven alaposan kommentelt, nem is magyaráznám túl, ha kérdés van vele kapcsolatban, akkor természetesen próbálok válaszolni (van néhány olyan alkalmazás a konfigban, amik nincsenek a tárolókban, pl. ov, glow, stb., ezeket vagy telepítjük, vagy értelemszerűen kiváltjuk mással).
Ahogy fentebb már céloztam rá, a Vifm-et mindenféle trükkökkel rá lehet venni mindenféle trükkökre, de mivel ezek sok mindentől függő dolgok, így nem kívánok velük foglalkozni! A stabil, megbízható működés bemutatása volt a cél, és a magam részéről kerülöm az ilyen megoldásokat (na jó, egy ssh mókolást én is mutattam korábban, a kivétel ami...)! Aki szeret kísérletezni, az saját felelősségre nyugodtan megteheti!
Némileg ehhez kapcsolódóan szeretném felhívni a figyelmet arra, hogy a különböző disztribúciók készítői előszeretettel adnak különféle foltokat a Vifm-hez (pl. Debian), ezért sajnos előfordulhat, hogy ami az egyik terjesztés által szállított Vifm-ben működik, az a másikban már nem megy... Például a kuka fentebb leírtak szerinti kezelése egy Debian folt, nem biztos, hogy minden disztribúció csomagkészítői átvették...
A program elképesztő mennyiségű lehetőséget kínál, tehát barátunk továbbra is a man, és a Vifm weboldalát is érdemes meglátogatni!
Berus
Hozzászólások
Szia,
Beküldte horvjoe -
Értékelés:
Szia,
Ez nagyon érdekes kis app. A lényeg, hogy könnyű. Én igazából Pi-n az DC-t használtam/használom, azonban ez relatív nehéz a Pi-nek. Aztán ott az MC, amit mostanság kezdtem felfedezni, tök jó, azonban nincsenek vagy én nem tudom (még) hogy kell beállítani előredefiniált könyvtárak, és nem tudok meghajtót váltani. Ez alatt azt értem, hogy fogom, rádugom és ahogy a rendszerben látom úgy nem látom a MC-ben.
Szóval ha új vagy akármilyen (fstab-n nem definiált) meghajtót teszek be, akkor DC, ha a megszokott akkor marad az MC.
Itt a ViFM-ben látom a config file-ban lehet változtatni rengeteg mindent. Ami rögtön feltünt, hogy a billentyűzet osztás átállítható a "megszokott" DC vagy MC kiosztásra.
Örülök, hogy ismertetted/ismerteted. :)
Szia,
Beküldte berus -
Értékelés:
Igen, a legtöbb MC F(unkció) billentyű alapból elérhető, ami meg nem, azt könnyen beállíthatod, pl. átnevezés az F2-re: nnoremap <f2> cw. Ezzel együtt nem váltja ki teljesen az alapértelmezett Vifm parancsokat, mert pl. F5-el már létező fájlt másolsz, nem kérdez rá mit tegyen, hanem a "fájl már létezik" hibát kapsz...
Változók ellenőrzése
Beküldte berus -
Értékelés:
Ha újabb verziójú Vifm-et futtatunk, lehet hogy kapunk egy figyelmeztetést, hogy elavult a konfigurációs állományunk!
A változók ellenőrzése módosult, pl.: elseif $DISPLAY forma helyett elseif $DISPLAY != '' formában kell megadni!