"Možná by to byl lepší příklad než prefabrikovat zmínky o starých editorech z ciziny, které znáte jen z internetu."
tak to jste hodne strelil vedle - vsechny ty editory jsem aktivne pouzival, ostatne jak by se jinak mohl ve screenshotu SpeedScriptu objevit muj clanek? Navic odkazy na texteditors.com (posledni tri v clanku) vedou na temata, ktera jsem tam zalozil a udelal screenshoty. Dtto uprava toho e.com - "tisnik" je muj nick (viz screenshot v clanku).
"Popularita textových editorů určených pro tvůrčí psaní je do určité míry reakcí na stále se zvyšující komplikovanost uživatelských rozhraní, různých oznamovačů nových zpráv, připravených update atd. – počítač (resp. jeho rozhraní viditelné uživateli) se tak ze sluhy, který pouze tiše očekával příkazy od uživatele změnil v zařízení, které si (mnohdy neustále) vyžaduje pozornost a tím pádem ji odvádí od reálné práce."
toto je hodně pravda, to rozhraní je dnes skutečně takové, že si tablet/smartphone/počítač doslova vynucuje pozornost. Nemodální dialogy z aplikací v backgroundu jsou jedna věc, další miliony notifikací doslova o všem.
T602 tedy nebyla moc distraction-free ;) Stacilo si drbnout do stolu, myska poskocila a zacalo se psat uplne jinde, nez kde clovek skoncil.
Taky prepinani na 60Hz video mod je rekneme pro konformni praci to nejhorsi. Tim trpely vsechny editory bezici v grafice, zajimave je ze ty profesionalni bezely v textu - Wordperfect, MS Word (for DOS), WordStar, XYWriter.
V textu mohlo běžet to, čemu stačily znaky v grafické kartě. Do EGA se daly nahrát, ale to byla až pozdější rozmařilost. CGA a Hercules vyžadovaly výměnu ROM s generátorem znaků.
Editory v grafickém režimu nevznikaly jen u nás (kvůli češtině), ale třeba Chi-writer se dal použít na češtinu, důvodem vzniku byla ale potřeba psát chemické vzorce.
Jestli pouzivate GNOME, tak za sebe pro markdown doporucuji uberwriter
https://ctrlv.cz/shots/2020/04/16/Cwe7.png
Clanek je skvely, jak uz to u Vas p. Tisnovsky byva. Diky za nej.
Dovolim si vsak poznamku k vasemu vyjadreni hned v prvni kapitole o tom, ze editory bez moznosti editace jsou jen pozerstvim: "To je ovšem – alespoň podle mého skromného názoru – jen pozérství..."
Prestoze osobne je taky nepouzivam, uznavam, ze urcity prinos maji. Pro nejlepsi demonstraci si priste, az budete chtit psat neco kreativniho, vemte obycejny papir a tuzku (idealne opravdove psaci pero a treba papir z Losin, to je potom psani zazitkem samo o sobe) a piste takto offline. Na papire nemate moznost mazat. Mate moznost skrtat a prepisovat, ale treba v pripade dopisu to nevypada dobre a musite pak prepisovat cely dopis, a v ostatnich pripadech se vam prepisovat nechce, protoze to "boli", je to pomale, atd... Ve vysledku vas to nuti mnohem vice premyslet dopredu, co chcete napsat, nez kdyz sedite u textoveho editoru, kde muzete na par uderu prepsat jedno slovo v celem dokumentu. Jak rikam, chce si to vyzkouset. Podle me tedy muzou mit tyhle (ne)editory podobny ucinek. Chci mit text v digitalni podobe, nechci si ho psat nejprve na papir, ale chci mit nad sebou bic v podobe toho, ze nemuzu editovat. Je to vlastne aplikace principu nejvetsiho odporu.
A to je podle meho skromneho nazoru vice nez pozerstvi.
Článek perfektní, o tom žádná.
Dovolím si povzdech. Co si mám myslet o textovém editoru, který po PgDn a PgUp neumístí kurzor na původní místo? (bez přeskočení konce / začátku souboru) Ano, jde to oskriptovat. A je někde skript, který opravdu funguje? Hledal jsem před lety, něco našel, ale nefungovalo to vždy a správně. Pak jsem si na toto zcestné chování zvykl a skript přestal používat. Stejně tak to je po přepnutí režimu (Esc, i) - kurzor se mi pohne o 1 znak. Zase mi nezbývalo, než si na to zvyknout. Vim používám, protože prostě nic lepšího nemám. Ne že by nebyly jiné programátorské editory, ale každý má nějakou podobně otravnou botu. A tak se sám sebe často ptám, jestli je tohle normální? A odpověď je, že ano, protože normální není to co je v pořádku, ale čeho je nejvíc. Dojímá mě snaha lidí řešit chyby editoru dodatečnými skripty. To je už dnes také normální. A tak nakonec zůstaneme u toho co známe nejvíc. Ovšem bojovat s něčím co má pomáhat je prostě proti principu. Často si připadám, jako bych tlačil kolo z kopce, místo abych na něm seděl a z kopce využil potenciální energii, kterou jsem do toho vložil na cestě do kopce. Chjo. Přitom je to "jen" editor..
Nepomůže. Ono se to totiž netrefí na správný řádek. Třeba u mě, mám zobrazeno 81 řádků najednou. Vytvořil jsem si soubor, který má 400 očíslovaných řádků a jsem na řádku 100, který je cca uprostřed obrzovky (vidím 61 až 141). PAGEDOWN mě přesune na řádek 142 zobrazený jako 3 řádek z hora. PAGEUP mě přesune na řádek 139 zobrazený jako 3 řádek zdola.
Ah jasne ok. Ja mel pocit, ze problem spociva v tom, ze PageUp/Down a podobne prikazy (H, M, L) doskakuji na prvni znak na radku - tedy ze se nepamatuje, ze kurzor byl rekneme na desatem sloupci.
Zkousel jste Ctrl+D a Ctrl+U popr. je namapovat na PageUp a PageDown? Protoze puvodni funkce PageUp a PageDown zavisi na "page", coz je dost vagne definovano.
Pak ale chceš používat značky - označ si pozici a můžeš na ni skočit odkudkoliv přímo: https://vim.fandom.com/wiki/Using_marks
Ah jasne ok. Ja mel pocit, ze problem spociva v tom, ze PageUp/Down a podobne prikazy (H, M, L) doskakuji na prvni znak na radku - tedy ze se nepamatuje, ze kurzor byl rekneme na desatem sloupci. To prave resi ta volba, o ktere jsem se zminil (tedy samozrejme to resi castecne, kdyz jste na 80 sloupci a radek, kam kurzor prejde po PageUp ma 10 sloupcu, tak smula).
Zkousel jste Ctrl+D a Ctrl+U popr. je namapovat na PageUp a PageDown? Protoze puvodni funkce PageUp a PageDown zavisi na "page", coz je dost vagne definovano.
Ctrl+D a Ctrl+U se chovaji rozumneji a da se nastavit i presny pocet radku pro strankovani.
S tim "a" "i" atd. me to kdysi taky matlo. Pomohlo mi predstavit si, jak vlastne Vim chape pojem "kurzor" a jak je to v jinych editorech. Ve Vimu v normalnim rezimu je kurzor umisten NA ZNAK, zatimco v jinych editorech MEZI ZNAKY. Proto taky prikazy "x" a "R" funguji presne podle popisu ("under cursor"), navic z toho plyne, ze neni mozne umistit kurzor za konec radku. Z tohoto duvodu existuji prikazy "A", "a", ktere dokazou po prepnuti do insert rezimu psat i za fyzicky konec radku. Ve Vimu (ne vi) to jde obejit pres 'set virtualedit=' a priblizit se tak ostatnim editorum.
Naproti tomu bezne editory maji kurzor mezi znaky (proto taky vypada jako svisla carka) a tim padem maji prikazy typu "smaz znak pred kurzorem" a "smaz znak za kurzorem" (typicky backspace a delete).
Nerikam, ze pristup Vimu je lepsi, pro mnoho lidi urcite neni, ale je to jen vysvetleni, proc se chova tak jak se chova.
(navic je nekdy matouci smysl visualnich bloku popr. vyberu-selekci) - tady pomaha prikaz "behave"
S tim "a" "i" atd. me to kdysi taky matlo. Pomohlo mi predstavit si, jak vlastne Vim chape pojem "kurzor" a jak je to v jinych editorech. Ve Vimu v normalnim rezimu je kurzor umisten NA ZNAK, zatimco v jinych editorech MEZI ZNAKY. Proto taky prikazy "x" a "R" funguji presne podle popisu v helpu ("under cursor"), navic z toho plyne, ze neni mozne umistit kurzor ZA konec radku. Z tohoto duvodu existuji prikazy "A", "a", ktere dokazou po prepnuti do insert rezimu psat i za fyzicky konec radku. Ve Vimu (ne vi) to jde obejit pres 'set virtualedit=' a priblizit se tak ostatnim editorum, ktere vlastne typicky porad jedou v insert rezimu a nic podobneho neresi (a v overwrite rezimu by spravne mely prepnout tvar kurzoru na blok/vodorovnou carku, protoze nyni pracuji tak, ze kurzor ukazuje NA znak a ne mezi).
Naproti tomu bezne (typicke) editory maji kurzor mezi znaky (proto taky vypada jako svisla carka) a tim padem maji prikazy typu "smaz znak pred kurzorem" a "smaz znak za kurzorem" (typicky backspace a delete). V GUI je to spravne, ovsem v textovem terminalu/konzoli takove editory vlastne zobrazuji kurzor spatne (nebo mene striktne receno - nesystematicky).
Nerikam, ze pristup Vimu je lepsi, pro mnoho lidi urcite neni, ale je to jen vysvetleni, proc se chova tak jak se chova.
(navic je nekdy matouci smysl visualnich bloku popr. vyberu-selekci) - tady pomaha prikaz "behave"
Kdyby nekdo vedel jak na to lepe, tak sem s tim.
Jedna se o funkci, ktera po stisku tab doplni mezery podle vzoru predchoziho radku.
function FillChar2(...) "{{{ python << EOF import vim try: def fillChar2(): mode = 'up' char = ' ' args = vim.eval('a:0') mode = vim.eval('a:1') if args > 0 else mode char = vim.eval('a:2') if args > 1 else char buff = vim.current.buffer nRowEdit = int(vim.eval("""line("'f")""")) - 1 nColMark = int(vim.eval("""col("'f")""")) - 1 nColCurs = int(vim.eval("""col(".")""")) - 1 nColEnd = int(vim.eval("""col("$")""")) - 1 # Po ukonceni insert rezimu kurzor skoci o 1 pozici zpet # Vyjimkou je prvni sloupec, kdy kurzor zustava na miste # Nejde pak rozeznat, zda byl kurzor na prvnim nebo druhem sloupci # Proto mam pozici pred ukoncenim insert rezimu v f mark # Ta y mela byt vzdy o jedna vetsi, nez akt. pozice kurzoru # s vyjimkou kurzoru na prvnim sloupci. # Naopak f mark nefunguje na konci radku, takze musim pozici # kurzoru v insert modu vypocitat z akt. pozice s osetrenim # vyjimky na prvnim sloupci. if nColMark == 0: nCol = 0 else: nCol = nColCurs + 1 # pozice kursoru v insert rezimu nCol = 0 if nColMark == 0 else nColCurs + 1 # detekce kursoru na konci radku cEol = 1 if nColMark+1 == nColEnd else 0 # musim najit vzorovy radek podle modu, preskakuji vsechny nevyhovujici delta = -1 if mode == 'up' else 1 nr = nRowEdit nrs = 0 while True: nrs += 1 nr += delta if nr < 0 or nr >= len(buff) or nrs > 5: # hledat do 5 radku print 'FillChar2(): model line is not found.' return 'end' sRowModel = buff[nr] if len(sRowModel) <= nCol: continue # moc kratka nColSpace = sRowModel[nCol:].find(' ') if nColSpace == -1: continue # nema mezeru sRemain = sRowModel[nCol+nColSpace:] lFRemain = len(sRemain) lSRemain = len(sRemain.lstrip()) if lSRemain == 0: continue # nema znak za mezerou nIndent = lFRemain - lSRemain + nColSpace indent = char * nIndent # ok, indent je vytvoren break # ted musim vlozit indent do radku reg_f = vim.eval('@f') vim.command('let @f="%s"' % indent) if nCol == 0: vim.command('normal "fP') else: vim.command('normal "fp') vim.command('let @f="%s"' % reg_f) print 'indent by %d row, len=%d' % (nr+1, nIndent) if cEol: # kdyz je kurzor na konci radku, skoci kurzor sam doleva vim.command('exe "normal \<Right>x"') else: vim.command('exe "normal \<Right>x\<Left>"') return 'done' fillChar2() except vim.error, e: print 'Vim FillChar2() ERROR:', e raise except Exception, e: print 'Python FillChar2() ERROR:', e raise EOF return '' endfunction " vkladam mezeru pro usnadneni zjisteni pozice kursoru, bude odstranena inoremap <Tab> <Space><Left><C-O>mf<Esc>:call FillChar2('up', ' ')<CR>a "}}}
Trochu offtopic, ale:
Je nekde nejaky prehled kde vsude byl integrovany neovim? Me zajima jestli se podarila prosadit ta puvodni idea, ze pujde integrovat do jinych programu. Nasel jsem ze existuje Firenvim - neovim pro firefox, a taky neovim pro visual studio. A neco vic? Dva zarezy se mi zda celkem malo...
Ahoj Pavle,
Diky za zajimavy clanek.
Ja jakozto Emacsak ( :-D ) jsem chvilu pouzival Emacs-Muse, a chvilu koketoval s Pyroom. Ale nakonec stejne pokud pisu povidku, nebo dejovou lini pro DRD, tak to delam v LO.
Co me vsak uplne uchvatilo (trochu OT), byly ty tve prezentace ve Vimu, na to jsem cumel jak bacil do lekarny. Porad rikam ze musim zjistit, jestli neco takovyho neexistuje i pro muj oblibeny editor :-D