20 éves a VIM

Ennek apropóján jelent meg egy cikk az arstechnica.com oldalon.

Hozzászólások

Az emacsot elvetettem, mert a keresés CTRL-S. Ami soros terminálon scroll-lock, ennek a "feloldása" a CTRL-Q.
Persze a karakterek átmentek, szóval végülis ment a keresés a CTRL-S (scroll lock be) + CTRL-S (keresés) + CTRL-Q (scroll lock off) szekvenciával. Na ez már sok volt...

Fuszenecker_Róbert

Mindenre azt, ami megkönnyíti a munkámat:
Forráskód szerkesztésére Visual Studiot, mivel C# fejlesztőként keresem a kenyeremet.
Windowson, ha szövegfájlt kell szerkeszteni, ami elég ritka, notepad++-t.
Ha Linuxon kell text fájlokat taknyolnom, akkor természetesen vim-et, mert az az optimális számomra.

De nem fújolok, ha a levelezésemet/adóbevallásomat nem vimmel intézem.

Fuszenecker_Róbert

[10:55:47] Laci: hali
[10:55:56] Laci: látom beszóltak neked a vim miatt :D
[10:56:22] Róbert Fuszenecker: hello!
[10:56:25] Róbert Fuszenecker: hát igen
[10:56:31] Róbert Fuszenecker: de meg is érdemlem
[10:56:41] Róbert Fuszenecker: minek vitatkozok szektáriánusokkal :)
[10:56:54] Laci: na ja
[10:57:06] Róbert Fuszenecker: ők már nem fognak semmi újat megtanulni, minden úgy tökéletes, mint a 60-as években
[10:57:16] Róbert Fuszenecker: minek is kell grafikus felület
[10:57:27] Róbert Fuszenecker: még a feleségük képét is ascii artban nézegetik :D

Fuszenecker_Róbert

Ugye egyikotok se hallott a GVim-rol? ;-)

Amugy komolyan, szerintem meg az ilyen nano-szeru torteneteknek nincs perspektivaja. Mind meg fog maradni a kezdok editoranak. Aki komolyba nyomja konzolon, az vagy Vim-ezik, vagy Emacs-ezik, esetleg joe. A tobbi komoly munkara kb. alkalmatlan.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Aki viszont nem komolyba nyomja konzolon, de rákényszerül arra, hogy komolyan szerkesszen konzolon (pl. nem indul a grafikus felület, szervert így ér el, stb.), az a nano vagy mcedit vagy hasonlóhoz fog nyúlni. Ahhoz, hogy egy egyszerű konfigfájlt átírjon, nem kell kódkiegészítés meg syntax-highlight meg clippy meg ilyenek. Akár egy sima sed is elég lenne :)
Ezért gondolom, hogy a teljesen fapados, mindenféle kényelmi(nek mondott) funkciót nélkülöző editorok is kellenek. Ahhoz, hogy hetente egyszer egy konfigfájlt átírjon, nem kell pilótavizsga a vim-re, nano is teljesen megteszi.

Mondjuk config fileokban jól tud jönni a syntax highlighting, de erre még az mcedit is képes.

Egyébként az a véleményem, hogy bár a vim és társai gyakorlatilag mindent kihoznak egy text editorból, amit csak konzolon lehet, de a konzol korlátozottsága miatt soha nem érhetik el azt a kényelmi szintet, amit grafikus editorok hoznak. Egy grafikus editor sokkal több információt képes megjeleníteni egységnyi képernyőterületen, sokkal több dinamizmusra van lehetőség, ezek mind gyorsíthatják a munkát. Ezért aki napi több órát dolgozik textfájlokkal, és van lehetősége grafikus editort használni, szerintem annak érdemes hozzászoktatnia magát, mert hosszú távon jobban megéri, mint konzolos editort használni.

Hát, én tök jól elvagyok a vim-mel, pedig sokat dolgozom vele. Persze lehet, hogy nem az optimális, de nekem már nagyon kézreáll. LaTeX/C/Lua/PHP/bash/... fájlokra nekem nagyon bevált. Kényelmes, no. Nem is tudnék olyat mondani, ami még kéne bele pluszban, és más editorban megtalálható.

Szerintem a grafikus vs. konzolos összehasonlításokból úgy, ahogy van el kell hagyni a jobb-rosszabb, több-kevesebb szavakat. Más. Aki a konzolhoz van hozzászokva, az el fog tudni helyezni annyi információt, mint amennyi neki kell, ellenben hihetetlenül gyűlölni fogja, ha bármikor is hozzá kell nyúlni az egérhez. Kedvenc példám a Sound Cloud és LESS fejlesztő Alexis Sellier, aki fogta és Mac OS X-ét lecserélte Arch Linuxra (a fenti kép az ő asztalát mutatja). Ettől ő jobb-rosszabb fejlesztő, többet-kevesebbet fejleszt? Nem, csak máshogy.

A fenti screenshoton csak a nyers forráskódok, illetve minimális extra információ (pl. sorszám), valamint egy (vagy több, nehéz kivenni) konzolablak látható. Tegyük fel, hogy van olyan ablak is, amiben dokumentáció olvasható. Ehhez a kialakításhoz két teljes monitorra van szüksége, ugyanezt egy IDE egy monitoron megoldja (persze ugyanennyi forrásfájlt nem tudsz tiling módban egyszerre megjeleníteni, de megnyitva meg lehet ennyi). Aztán hol vannak az olyan szolgáltatások, hogy pl. gépelés közben szeretné látni egy függvény definícióját, hogy lássa annak paraméterezését? Vagy az elgépelések automatikus kiemelése? (Tudom, ezeket meg lehet oldani konzolon is, de korántsem annyira helyhatékonyan, mint grafikus módon.)

Mit jelent a hatekony? A vim-nek pl. annyi korlatja van, hogy az elgepeleseket csak menteskor kepes kijelezni, viszont vorossel alahuzza oket. Ha olyan szintaxiskiemelesed van, ahol a regexek ugy vannak megirva, hogy csak akkor matcheljen, ha minden fasza (ilyen pl. az asterisk konfigfajloke), akkor viszont mar begepeleskor vorossel jelzi, hogy ez itt nem lesz jo. Ennel hatekonyabb kiemelest nem tudom, hogy hol kellene keresni.
A fuggveny definiciojahoz pedig meg kell nyomni harom gombot, es maris elojon. Ez a legtobb IDE-ben valami hasonlo bonyolultsagu feladat, ott talan ket gombot kell megnyomni hozza. Fuu, bonyolult.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

"mar begepeleskor vorossel jelzi, hogy ez itt nem lesz jo. Ennel hatekonyabb kiemelest nem tudom, hogy hol kellene keresni."

Pont erre gondoltam. Oké, akkor ezt tudja, ezt benéztem.

Én speciel azt szeretem, ha automatikusan, külön gyorsbillentyű lenyomása nélkül látom a függvénydefiníciót (nem code completitionre gondolok), de gondolom ez csak config kérdése. Viszont kérdés, hogy konzolon mennyi helyet foglal el ez az képernyőből, mennyire különül el a háttértől, stb.

Közben eszembe jutottak más feature-ök is, bár ezek már erősen IDE feature-ök. Pl. különböző debug eszközök: breakpointok, stack trace mutatása, változók aktuális értékeinek mutatása (grafikus IDE-ben ez mouse hoverre is megy), stb. Gondolom scriptekkel ezek mind megoldhatóak, de kérdés, hogy mennyire kényelmesen.

Scriptekkel? Nyomok ket billt, es mar fut is a megfelelo parancs, a kimenetben pedig konkretan ala vannak huzva a forrasfajlra valo hivatkozasok, sorral (es oszloppal, ha az illeto parancs ezt tamogatja).

A debugging az mas teszta, az kicsit neccesebb tud lenni, de fogadok, arra is van mar valami UI. Megmondom oszinten, en nem tudom, mert nekem eddig meg nem volt ra szuksegem.

A code completion pedig nem foglal sok helyet. Pl. https://skitch.com/hron84/eyjcc/vim-completion , de ez fugg a kiegeszitendo fuggvenynevek hosszatol, illetve hogy hany lehetoseg van, van, hogy leer az oldal aljara, es meg gorgetheto, illetve oldalra eleg sokaig kimehet. Viszont ez is konfigolhato, nekem ugy van belove, hogy addig nyujtozzon, amig a kepernyo tart, viszont lehet olyat is mondani, hogy a listaban csak 10 item latszodjon.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Dokumentáció: tmux a lelke. Megnyitod, bezárod, átváltasz rá, felesbe nézed a forráskóddal együtt, stb. Mi kell? :)
Függvények definíciója: completeopt-hoz hozzáadod, hogy 'preview', C-X-C-O, aztán a preview window-ban nézheted is. Az ablakot bezárod a C-WZ-vel. "Beépített" függvények megvannak elég sok nyelvre, a sajátodat meg legenerálod a ctags-szel. Van itt mindenre lehetőség, csak kérni kell.

Sot, lehet triggert is irni (egy sor) hogy menteskor generaljon taget.
Egyebkent meg nem ordogtol valo am az sem, hogy terminalos vim mellett firefoxban nezek doksit. A FF nincs mindig fokuszban, de ha kell, alt-tab, es at is valottam, Ctrl-L es mar irom is a cimet, Ctrl-K es mar keresek is. Legfeljebb a gorgeteshez kell egereznem, ha rogton nem talalom meg, amit keresek.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Tudom, hogy lehet. De nem akarom, hogy minden mentéskor még ezzel is töltse az időt, a legtöbb esetben nem keletkezik új függvény. Ha meg mégis, és nem találja, megnyomom a C-A mágikus kombinációt, aztán már meg is van.
Persze, böngésző is egy megoldás, ha épp neten keresed vagy esetleg html-ben van.

Te, en konkretan kodolok vim-ben, es egyreszt teljesen elegseges az egysegnyi teruletre eso informacio (oke, csaltam, nem 80x25-os terminalon kodolok), masreszrol pedig sokkal gyorsabb es sokkal kevesebb szopo van vele, mint a GUI-s editorokkal. Persze, szeretem en pl. a NetBeans-t is, csak egyreszt zabalja a memoriat, masreszt meg a Ruby tamogatas amugy is haromeselyes most benne.

Egyebkent pedig egy editor kenyelmi szintjet a felhasznalojanak az igenyei hatarozzak meg. En azt varom el egy editortol, hogy megfeleloen indentaljon, kepes legyen szintaxisellenorzest vegezni, ha kell, kepes legyen code completionre, es mutassa hogy a fajlban hol jarok. Na es persze kepes legyen keresni/cserelni a fajlban. Ezt a vim mind teljesiti.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Na, akkor még húsz év, és elgondolkodom az nvi lecserélésén :)

Igen, attól független. (Szerintem valamivel korábbi is, mint a vim, de ott már nüansznyi lehet az eltérés.) Abban jobb, hogy sokkal kevesebb minden van belezsúfolva, és (talán) jobban emlékeztet az eredeti (a kereskedelmi Jujnikszokban mai napig meglevő) vi-ra. És hogy a BSD-k általában azt adják alapból, nem a vim-et. Szóval nem feltétlenül jobb, de akinek nem kell az a sok minden amit a vim tud, annak bőven elég szokott lenni.