vi vs notepad - updated

Feladat: cseréljük ki a dupla szóközöket sima szóközre.

notepad 9 leutes (CTRL+H, space, space, tab, space, alt+a, esc)

vi 18 leutes (:, shift+5, s, shift+?,|, space, shift+|, space, shift+?,|, space, shift+?, g)

vim 15 leütés (:, 1, ,, shift+4, s, shift+?,space,space,?,space,?, g, enter)

:)

Angol kiosztással értendő.

----

Szerk: Egyébként látom senki nem vette észre, hogy az egész blogpost csupán egy teszt, hogy hányan kezdenek debezzegavimezni és hányan veszik észre, hogy egyszerű feladatra nem kell ionágyú :)

Hozzászólások

Ebből is látszik, hogy a 'vi' jobb mert edzésben tartja az elmédet!

------------------------------------------
"Nincs ez el**szva, csak másra lesz jó!"

vi: 12 (magyar kiosztás + numpad)
shift+., shift+5, s, /, space, space, /, space, /, g, enter

3 leütéssel győzött a notepad. :)

Nekem csak 10 leutes vi -val.

update:
pontosabban kilenc: ":s/ / /g"

Juteszembe
olyan megoldást keresek ahol kb 20 filebe kellene a <? kicserélni <?php ra.
Viszont ezekbe már van ahol rendesen <?php nak írták. Szóval a <? csere <?php ra nem jó, mert akkor azokon a helyeken <?phpphp lenne.
Van erre valami jó kis megoldás?

pch
--
http://www.buster.hu "A" számlázó
--

Vi vagy notepad megoldást akarsz? Előbbiben regexppel 1 lépésben, utóbbiban 2 lépésben megoldható.

Látom a feladat mindenkin kifog*, ezért itt egy jó megoldás (feltéve, hogy a vi regex motorja elég okos hozzá): s/<\?\B/<?php/g

*: Kezdjük ott, hogy ki mondta, hogy <? után whitespace lesz? Aztán a ?-t escape-elni kell, különben a regexp motor értelmezi. Végül: a feladat megoldható egy lépésben regexppel, fölösleges két cserét futtatni. Notepadban kell a 2, mert az nem tud regexpet.

--
Don't be an Ubuntard!

Feladat: az összes "alma" előfordulás cseréje "körte"-re, de csak akkor ha szóösszetételben szerepel, és utána vesző következik. Például "a birsalma, ..." estén cseréljen, de a "az alma, ..." és a "birsalma volt ..." esetekben ne.

Melyikben hány leütés lesz? :-)

Kiegészítő feladat: Az "az alma, ..." esetén is cseréljen, de ha az "alma" előtt névelő van, akkor azt is cserélje.

-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.

vim: :s/ / /g ENTER (shift-tel egyutt 11 leutes)
notepad: ALT+E, R, space, space, ALT+P, space, TAB, TAB, TAB, TAB, SPACE, ESC (ALT-tal egyutt 14 leutes)

minden attol fugg, mennyi szandekos bullshitet raksz bele hogy az jojjon ki a vegen, amit te akarsz kihozni belole... (te siman 18 leutesnek mondod a vi megoldast, holott az minden epeszu vi user szerint csak 11 :D)
-
Slackware current / OSX Snow Leopard

Szerintem a 9 még mindig kevesebb, mint a 11. ;)

Viszont azt látom kifelejtette mindenki, hogy az egész fájlban cserélek, aminek a helyes parancsa, ami már 15 leütés:

:1,$s/  / /g

Egyébként a blogpost csupán egy egyszerű kísérlet volt arra, hogy vajon hányan veszik észre a lényeget (egyszerű feladatra egyszerű eszköz) és hányan kezdenek neki, hogy debezzegavim!

----------------
Lvl86 Troll

szerintem mar boven bebizonyitottad ezzel a posttal es a hozzaszolasokkal hogy nem ismered a vimet, akkor meg minek erolkodsz? :D
a teljes file-ban csereles (valoban kifelejtettem) egyetlen karakterrel tobb: %

'egyszeru feladatra egyszeru eszkoz' -> mi az a feladat? ha a ket space csereje egyre, akkor nagyon durvan bebuktad
szamold ki hany billentyuleutes kell a notepad elinditasahoz, a file megnyitasahoz, a csere vegrehajtasahoz, a file elmentesehez es a notepad becsukasahoz!

aztan EZT hasonlitsd ossze ennek a vimes megfelelojevel, vagy mondjuk a kovetkezo paranccsal:

sed -i "s/ / /g" filenev

:P
-
Slackware current / OSX Snow Leopard

legrosszabb esetben? :D a legrosszabb esetben van pl. vegtelen szamu backspace :D

Linuxon olyan hotkeyt allitasz be amilyet akarsz, nekem volt meg anno a WindowMakeres korszakomban pl. a 'menugombra' (tehat a windowsos billentyuzetek nem-zaszlos gombjara) rakva a terminal, igy egyetlen gombnyomasra indult :)
-
Slackware current / OSX Snow Leopard

Mivel a vim és a notepad funkcionalitásának összehasonlítása történik, ezért de, feltételezhetjük ;)

De amúgy én igazából azt látom, hogy szimplán a vi fanok hozzák a szokásos formájukat és erősködnek, hogy de bizony, hogy vi-t kéne mindenre használni, csakazértis ;)

----------------
Lvl86 Troll

Akkor megkérnénk, hogy te a továbbiakban

- vagy mindig használd a notepad-et (és szívj, ha nem tudja azt amit kell)
- vagy mindig használd a vi-t (és szívj, ha nem tudod, hogy hogyan kell megoldani vele)
- de a legkorrektebb az lenne, ha minden feladat előtt kiszámolnád, hogy melyikkel hány billentyűleütés, és annak megfelelően kattintanál a notepad/vi ikonra.

Mellesleg a korrekt számolgatás érdekében (ami ugye szerinted az, hogy a Shift-4 - gyk: $ - illetve az Alt-a két db. billentyűleütés, nem pedig egy db. billentyűkombináció, aminek akár még értelme is lehet) számoljunk olyanokat is, hogy pl. a notepadben 18 sorral lejjebb lépés *bilentyűzet* segítségével 18 db lenyíl, míg vi-ban 18j karaktersorozat (azaz 3 db billentyűleütés). Meg szívathatjuk magunkat azzal is, hogy pl. a kurzormozgató gombok 3 karakteres szekvenciát küldenek (ESC-[-A/B/C/D), míg ugye a hjkl az csak 1, azaz előző feladatom esetén a notepad 18*3, míg a vi változatlanul 3. És ha nem UNIX/Linux "terminal"-ban gondolkodunk, hanem PC-s billentyűzetben, akkor is csak nüansznyival jobb a helyzet, ugyanis tudtommal az Fx, meg PgUp/Dn/CursorUp/Dn/stb gombok 2 bájtos scan-kódot küldenek, azaz a 18 lenyíl nem 18*3, hanem 18*2 bájtnyi adat átdöcögését jeleni - amit környezettudatos felhasználó nyilván ugyanúgy számba vesz az eszköz kiválasztásánál, mint azt, hogy egy vagy kettő vagy három gombot kell lenyomnia (sőt! a végén felengednie is) az adott feladathoz. De mondhatunk olyat is, hogy fenti feladatodat DEC VT100 terminálon oldd meg, ahol egyrészt nem fut a notepad (míg a vi igen), másrészt ha futna is, mivel nincs rajta ESC gomb, így kénytelen lennél Ctrl-[ formában beütni helyette. (Mondjuk az Alt-a -t még nem látom, de majd valaki megmondja a tutit.)

(Az még érdekelne, hogy a "kilépés-mentéssel" funkció vi-beli megvalósítása - a shift-z shift-z - normális embernek: ZZ - szerinted hány billentyűleütés, tekintettel arra, hogy nem kell, de lehet felengedni a shiftet a 2szeri z lenyomása közben.)

Röviden összefoglalva, ahogy a székely gyerek mondta az apjának: "remélem komoly, mert viccnek elég béna".

mutasd meg legy szives, ki es hol irta hogy "vi-t kene mindenre hasznalni"...

raadasul szerintem mindenki nagy ivben lesz@rja hogy te mit hasznalsz :D nyugodtan hasznald a notepadet, en hasznalom a vim-et, es mindenki boldog (en legalabbis az vagyok a vimmel, az meg kulon poen mikor valaki latja mit csinalok, es leesett allal nez ki a fejebol hogy 'ezt is tudja??' :D)

egyebkent ez a blogpost kb. annyira ertelmes, mint osszehasonlitani a vonatot az autoval ugy, hogy megnezed, melyikkel egyszerubb az autopalyan kozlekedni. es kiderul hogy a vonat milyen szar, mindenre hasznalhatatlan, tiltsuk be, nem is ertjuk hogy a sok idiota miert jar vonattal, meg miert leteznek a tehervonatok, ugye :D

de ha gondolod, csinalok neked egy programot, ami csak annyit tud hogy kicserel a file-ban minden dupla szokozt egyre, ha megigered hogy ezentul azt hasznalod (mindenre) a notepad helyett :P

-
Slackware current / OSX Snow Leopard

jogos!
Akkor most írjuk át az összes dátom formátumát mm/dd/yyyy-ről dd/mm/yy-re, esetleg tüntessük el az összes mailcímből a hostot! :P

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Jó, akkor kap egy pontot a notepad is. Apropó, azt hogyan érem el, hogy a fájlok elejére ne tegyen valami két kis bizbaszt? A múltkor kénytelen voltam az óráimra windowson készülni, a LaTeX aztán nem volt hajlandó lefordítani miattuk. És ahányszor megnyitottam a notepaddel, annyiszor kitette újra, ahányszor töröltem.
--
Fight / For The Freedom / Fighting With Steel

első megjegyzés: ha nem azt írnád, hogy shift+4, hanem azt, hogy $ , akkor egyrészt olvashatóbb lenne, másrészt nem angol kiosztást használók is tudnák, hogy mit írtál, lehetne gondolkodni azon, hogy tudunk-e az általad leírtnál jobbat, esetleg értelmesen ellenvéleményt kifejteni

második megjegyzés: a vi megoldásod - és a számításod - több sebből vérzik:
- a kettőspontot csak egy leütésnek számoltad, holott az addigi konvenciód szerint kettő, lévén shift-;
- mint azt korábban leírták, nem 1,$ a helyes címzés, hanem %
- az egész dolog ott bukik, hogy az általad kikötött *angol* (azaz UK) kiosztásban a shift-4 lenyomásakor nem $, hanem # jelenik meg. Amire valószínűleg gondolhattál, az az amerikai - azaz US.

Már csak azt nem látom, hogy ez az egész mire jó: tudtál mutatni egy példát, ahol a vi alulmaradt. Akkor most egy picikét módosítsuk a feladatot: nem két egymás követő szóköz, hanem 2 vagy több egymást követő szóköz, és - ha igazak a hírek, hogy a notepad nem tud regexpet - akkor gyakorlatilag a vi végtelenszer jobban teljesít, hisz

:%s/ */ /g

formában leírva tudja azt - azaz az eredeti megoldáshoz képest 1 db plusz karakter kellett, míg te a notepad-del indíthatsz 2, 3, 4, n db cserét :-)

Szóval hoy én is írjak ilyen nagypofájú baromságot: észre kéne venni, hogy vannak feladatok, amikre a vi túlzás, és van amihez kevés. De ehhez meg is kéne tanulni használni, hogy eldönthesd, hogy adott eset ágyúval verébre, vagy csúzlival tankra helyzet. Nem utolsósorban a notepad biztos kevesebb billentyűleütéssel tud 2 szóközt 1-re cserélni, de vajon hányszor kell ezt megcsinálni, és hányszor olyasmit, amiben viszont alulmarad.

Ismet egy vimfan, aki nem birja elviselni szo nelkul, hogy nem a vim a uberlegjobbabb mindenben.

Miert ez az egesz - nyilvanvaloan -troll post? IRC-en beszelgettem valakivel, hogy egy alkalmazasaltal hasznalt szovegfajlban le kellene cserelni a duplaszokozoket. Egybol jott ra a valasz, hogy "vi-ben csak ennyi". Oszt'? Ez meg notepadban ennyi, vegeredmeny ugyanaz, cserebeegy 0bites user is meg tudja csinalni urhajos kikepzes nelkul. De valahogy a vim fanoknak mindig muszaj megemliteni, hogy debezzegavim, tanuldmeg, mert az mekkora kurvajo meg satobbi.

Es nem erti meg, hogy en nem akarok mast, csupan a letezo legegyszerubb modon szoveget szerkeszteni.

Es igen, van, hogy nem eleg, es mondjuk kell a notepad++ makrozasi kepessege. Ja, tudom, vim regexppel megoldja. Jo, leszarom, addig, mig kigondolom ahelyes regexp kifejezest 5x lefutott a makro.

Aztan van a kulon kedvencem, az IDE-killer vim user, aki meg akar gyozni arrol, hogy nekem akkor is vim kell, es hogy szopjak mindenfele pluginok osszereszelesevel, mert "mennyire jol lehet szoveget szerkeszteni", mikor kozlom, hogy nekem refactoring meg integralt debug es fajlok projektszintuu kezelese (ertsd: nem csillio onallo fajl, hanem az abban letrehozott programkod ertelmezese es kodkiegeszitesekkel valo tamogatasara) van szuksegem.

----------------
Lvl86 Troll

"debezzegavim, tanuldmeg, mert az mekkora kurvajo"

akkor ismetelten megkerlek, hogy mutasd meg hogy ki mondta itt hogy debezzeg tanuldmeg...
en ugy latom hogy az egesz post csak a te trollkodasod amivel a kepzelgeseidnek probalsz alapot adni :D

"Ja, tudom, vim regexppel megoldja. Jo, leszarom, addig, mig kigondolom ahelyes regexp kifejezest 5x lefutott a makro."

vimben is lehet makrozni :D

a vim meg NEM IDE. ennyi. ettol fuggetlenul en is ezt hasznalom fejlesztesre is, de vannak olyan ficsorei pl. a visual studionak, amik sokat segitenek (ettol meg a szovegszerkesztoje agybaj, de ez mas tema)
-
Slackware current / OSX Snow Leopard

"ki mondta itt"

Miért, csak itt vannak vimfanok szerinted? :)

"vimben is lehet makrozni :D"

Aztán mond, hogy nem mondja itt senki, hogy "debezzegavim" :P

"a vim meg NEM IDE"

Igen, tudom. Ennek ellenére mindig van pár okos vim huszár, aki valahogy a VS és az Eclipse-re mindig azt mondja, hogy fúj, bloated, használj vim-t.

----------------
Lvl86 Troll

"Miért, csak itt vannak vimfanok szerinted? :)"

ertem. szoval valamikor valaki azt mondta neked, hogy hasznalj vimet, ezert alltal neki trollkodni. grat :)

"aztán mond, hogy nem mondja itt senki, hogy "debezzegavim" :P"

aha, szoval ha felhozol valamit a vim ellen, amit egy masik editor tud, akkor szigoruan tilos megjegyezni hogy megint FAIL a reszedrol, mert a vim is...

"VS és az Eclipse-re mindig azt mondja, hogy fúj, bloated"

en is azt mondom, igenis fuj es bloated :) ettol meg nem mondom senkinek hogy hasznaljon vimet (en azt hasznalom, de az meg az en sajat dontesem)

-
Slackware current / OSX Snow Leopard

a) a vimfan sajnos nem ül, leszarom a vimet, és folyton vi-t emlegetek, nem véletlenül.
b) én mondtam, hogy "vi-ben csak ennyi"? Ha nem, akkor próbálj ne engem lebaszni miatta.
c) nem tudom te mit olvastál, de amire nekem válaszoltál, abban én azt jeleztem, hogy a *saját* *magad* által kitalált számítási módszerrel számolva is tévedsz; valamint azt jeleztem, hogy hasonlóan agybaj módszerrel meg kihozható a tieddel szöges ellentétben álló eredmény; valamint azt jeleztem, hogy van ahol a vi sok, és van ahol kevés.

Szerintem téged frusztrál, hogy valaki meg tudta tanulni a vi-t, neked meg nem sikerült. Nem baj - az - nem jellemhiba. Mondtam én, hogy használj vi-t? Nem kötelező.

a notepadosban az a szép, hogy a végén az Esc a cancelnek felel meg. ééérted, megcsinálod az összes változtatást, aztán mégse? na ez a windows filozófia ;-]

Megjegyzés a "Szerk:"-hez:
Amelyik teszt eredményét előre tudod, azt felesleges elvégezni. De ez most nem is számít, mert kevered a teszt és a provokáció szavakat.

-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.

:%s/ \+/ /g
14 leutes, ha a shift lenyomasat kulon veszem. A :% eseteben nem szamoltam 2x a shiftet, mert lenyomva tartom.
--

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

azt tenném még hozzá, hogy aki olvassa a Hyperion bukását, a 351. (350, tegnap jöttem!) oldalon találja, ahogy Ummon a mesterséges intelligencia buddhista kóanban meséli a Végső Intelligenciáról: nem más ő mint a VI.

Kacu!

:-)

--
nincs aláírásom

rejtett up + értelmetlen, de talán nem nyilvánvaló megoldású feladat + egy kérdés:

adott szövegfájlban végezzük el a következő módosításokat:
HA egy sorban létezik az [:alnum:] osztályba tartozó karakter, AKKOR a sort cseréljük le a '0' stringre.
EGYÉBKÉNT HA a sorban létezik a [:graph:] osztályba tartozó karakter, AKKOR a sort cseréljük le az '1' stringre.
EGYÉBKÉNT a sort cseréljük le a '2' stringre.

---------------------

nincs kedvem gúglizni: a vi-nak milyen a sed és awk támogatottsága? és a vimnek? (értsd hívhatok-e sedet/awk-t az aktuálisan kijelölt sorra? hívhatom-e ugyanőket valamiképpen, pl. algoritmikusan kiválasztott sorokra?)

sed-et, awk-ot, bármit hívhatsz, a ! paranccsal. A ! parancs szoros rokonságot mutat a d, y, c < és > parancsokkal (már ami a szintaxist illeti). Az algoritmikus kiválasztásra pedig a g parancs szolgál (van egy UNIX parancs: grep - ez is innen lett, g/RE/p - a legismertebb forma. (És mindez szigorúan vi, hogy a vim mit tud, az nem érdekel.)

Amúgy szerintem ilyen egymásba ágyazott if elif else nem nagyon van vi-ban - vimben lehet, hogy van.

kezd offtopic lenni, de talán még belefér:

akkor mi van, ha mondjuk minden prímszámadik sort akarom kijelölni, és azokra végrehajtani valamit? tegyük fel, hogy a prime parancsszót tartalmazza a (n)vi(m) (azért, hogy ne kelljen most a tényleges megoldással szórakozni)