"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