← Uz sākumu

vim - ko tāds dīvains?

29. oktobrī, 6 komentāri

Šī ir izvērstāka versija šim manam tvitera pavediem.

Ir tāds teksta redaktors vim. Tas ir īpašs un ir pieejams teju uz katras uz unix (un ne tikai) bāzētas operētājsistēmas pēc noklusējuma. Stackoverflow populārākais jautājums ir par to, kā no tā iziet.

Lai arī to kā teksta redaktoru ierobežotā formā var izmantot klasiskajā režīmā, daudz spēcīgāks un spējīgāks tas kļūst visos pārējos, par kuriem tagad nerunāsim.

Pats raksts
Pats raksts

Problēma, kuru vi autors tālajā 1978. gadā mēģināja atrisināt, bija tam laikam netriviāla.

Sāksim ar to, ka terminālis, pie kura viņš ikdienā sēdēja un nodarbojās ar teksta ievadi, pats par sevi neko neprata. Tā mērķis bija uz klaviatūras saspaidīto paņemt un nosūtīt uz attālinātu meinfreimu, bet pretī saņemt ekrāna saturu. Tas nozīmē, ka, ja Tu nosūti burtiņu 'a' uz meinfreimu, tad uz ekrāna tas parādīsies tikai tad, kad tas tur tiks saņemts, uzzīmēts un atsūtīts tev atpakaļ.

Tā teikt - tev pa rokai bija klaviatūra un ekrāns, bet dators, kurā tu ievadi un no kura izvadi, atradās ļoti sūdīga savienojuma otrā galā. Katrs taustiņa nospiediens aizsūtās uz to galu, dators tur kādu brīdi padomā, izlemj ko sūtīt atpakaļ, tad displejs to saņemto attēlo.

Pats interfeiss ir ļoti aizraujošs no mūsdienu skatu punkta, taču tad šis ieraksts pārvērstos kaut kādā monstrā.

Raugi, sēžot savā krēslā, tas sūdīgais savienojums izmērāmās vienībās bija 300 bauds, jeb tolaik (FSK modulācija) 300 bps, kur "b" ir biti, nevis baiti. Ne sevišķi viltīgu aprēķinu rezultātā sanāk ap 37 baitiem sekundē. Viens simbols, atkal jau rupji rēķinot, ir viens baits (atkal . Šī termināla ekrāna izmērs bija 12x80 simboli, kas jau vien sanāk 960 baiti (atkal - neliels tuvinājums). Tas nozīmē, ka pilna ekrāna pārzīmēšana prasa pusminūti labos apstākļos. Viena ekrāna rindiņa - divas sekundes.

Tas ir ļoti nepieņemami pilna ekrāna teksta redaktoriem. Kamēr mēs runājam par komandrindu, kad viss, ko tu nosūti un saņem ir nedaudz teksta, tad iedomājies, kas jāpārsūta, ja pēkšņi tu vēlies visas tās vājprātīgās 12 teksta rindiņas padzīt uz leju.

Respektīvi, tolaik viss ņudzēja un cilvēki augstskolās darīja visādas lietas, lai apdzīvotu jauniegūto pieejamo datortehniku. Teksta rediģēšana, protams, bija viena no Svarīgajām Lietām.

Nu, un tad arī loģiski šķita, ka vienīgais patiesais ceļš ir teksta rediģēšana ar komandām, minimizējot ekrāna pārzīmēšanas nepieciešamību. Tā vietā, lai uzrakstītu, pielabotu, izdzēstu, tu saraksti komandas. Tās pa modemu sūtās prom, rezultāts saņemās atpakaļ. Kamēr tas notiek, tu sēdi tiktokā.

Zemāk ir redzama septiņdesmito gadu beigu termināla ADM-A3 klaviatūra (tastatūra?). Tieši uz tādas savu ex un vēlāk arī vi programmēja tā autors.

Termināļa ADM-3A klaviatūra
Termināļa ADM-3A klaviatūra

Kā uzskatāmi redzams, vi biežāk izmantoto taustiņu izvēle nav nekāda nejaušība. Tie tika izvēlēti tieši sava ergonomiskā un ērtā novietojuma dēļ, nevis kau tkādā IT speciālistu sanāksmē hihenē.

Piemēram, esc taustiņš, kurš pārslēdzas no vizuālā režīma uz standarta režīmu, ir pavisam pa pirkstam, ne? Mūsdienās tur atrodas tabulācijas taustiņš. IBM PC klaviatūras galu galā uzvarēja.

Tie, kuri ikdienā aktīvi lieto vim, esc taustiņa funkcionalitāti piedefinē capslock, kuru vispār retais cilvēks izmanto. Savukārt tie, kuri zin, ka kādreiz ctrl taustiņš bija ērtākā vietā, capslock pārveido par ctrl un dzīvo bēdu nezinādami. Līdz brīdim, kad jāpiesēžas pie sveša datora.

Tiem, kuri izpētīja attēlu, ir skaidrs, kāpēc kā kursora pārvietošanas taustiņi ir tieši h, j, k un l. Ja uz vi autora termināļa tur nebūtu uzzīmētas bultiņas, tad, iespējams, mēs dzīvotu daudz skaistākā un ērtākā pasaulē, kur vispārpieņemts, ka kursora pārvietošanai jāizmanto wasd vai ijkl.

Vispārpieņemts tik ļoti, ka absolūti visur, kur ir nepieciešama alternatīva kursora taustiņiem (izņemot, protams, geimerus), tie ir tieši hjkl un nekas cits. Iedomājies - 44 gadus. Arī webā - piemēram, tanī pašā Gmail iezīmēt iepriekšējo vai nākamo e-pastu var tieši ar j un k.

Klaviatūras pirmajā rindā kā nākamais aiz 0 ir :. Tā nu iegājies, ka šis tiek izmantots gan iekš vi, gan tā mazā brāļa ex kā komandu ievades prefikss. Mūsdienās jau atkal esam apdalīti un kolu jāievada caur shift taustiņu.

Starp citu, par ex runājot. Tas ir teksta redaktors, kurā tu operē ar vienu pašu rindiņu. vi principā ir tā paša ex vizuālais režīms.

`ex` redaktora sesijas piemērs
`ex` redaktora sesijas piemērs

Ja neskaita to, ka ergonomiskās kvalitātes šim terminālam nebija, vismaz taustiņi bija pa rokai...

Ja nu kādreiz vajag kādu radošāku veidu kā iziet no vim, tad kaudzīti var atrast te.

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar Valdis Vītoliņš

29. oktobrī, plkst. 23:58

Es Vim lietoju katru reizi, kad man vajag uzrakstīt ko garāku (ieskaitot HTML formu teksta laukus) un man to nevajag kompilēt: https://odo.lv/Blog/121123

Gravatar Kaspars Autors

30. oktobrī, plkst. 00:55

Es personīgi vim lietoju tikai tad, ja vajag kaut ko veikli parediģēt attālināti vai lokāli. Citādi - vscode. Ja go, php vai python projekts, tad goland, phpstorm vai pycharm respektīvi.

Gravatar HIGH-Zen

2. novembrī, plkst. 12:02

Pašās beigās tie nav nekādi radošāki veidi, jo tur vajag komandrindu, kuras vietā karājas vim. Radošākais veids ir reset poga ar visa servera pārstartēšanu :D Bet nu vispār nav jau grūti atcerēties kombināciju ":q".

Gravatar Gints

8. novembrī, plkst. 01:31

Neesmu tik vecs, ka būtu bijis spiests lietot vim, un pierodot pie nano jau no paša sākuma (~17 gadi), mācīties vi liekas muļķīgi - pārāk "ne-moderns" un grūti iegaumējams piegājiens vi komandām. Vienīgais, ko zinu ir ":wq", kad tiešām nav cita editora, bet pēdējā laikā nano ir praktiski visur, kur nācies saskarties ar konsoles tipa editēšanu.

Gravatar tālo laiku cilvēks

11. novembrī, plkst. 22:33

pico/nano ir mana izvēle joprojām, kad kaut ko vajag izdarīt *nix. vi - no way. Pārāk gīkisks. Varbūt loģisks kādreiz sen (kā jau rakstā minēts) un daudzi izmanto arī tagad, bet ne es.

p.s. Sveiciens visiem, kas tusējās IRC kanālā #Latvija tajos tālajos laikos. irc.funet.fi irc.ludd.luth.se irc.uni-erlangen.de (no LV, šķiet, nebija pieejas) - kas tur vēl bija par serveriem jau aizmirsts, bet šie ir atmiņā. Nu jā, pēc tam bija irc.apollo.lv arī kādu laiku :)

Gravatar Gatis Rumbens

11. novembrī, plkst. 23:58

*nix lietoju no 90. gadiem...vi tajā laikā likās de facto redaktors... Un toreiz likās viss pašsaprotams, protams vēlāk uz BSD sāku lietot pico...vēlāk nano... Un sapratu, ka laikam ir laiks beigt lauzīt galvu ar vi komandām... Bet nu vēl joprojām pieslēdzoties ne "savām" sistēmām remote.. Lietoju vi.. Bet nu par to iziešanu no redaktora...labs..atceros, ka tik tiešām daži labi slēdza laukā serveri 😂