Portál AbcLinuxu, 25. dubna 2024 06:23

Editor VIM prakticky - II

29. 9. 2003 | Pavel Kysilka
Články - Editor VIM prakticky - II  

Pokud se vám líbil 1. článek o editoru VIM, tak zde je další díl a opět pár nových vychytávek.

  1. Úvod
  2. Bloky dat rychleji
  3. Syntaxe k souborům
  4. Foldy
  5. Editace schémat
  6. Formátování zdrojaku
  7. Detailnější vyhledávání
  8. Píšeme opačné
  9. Logika VIMu
  10. Námět k dalšímu článku

Na úvod

Pokud se vám líbil 1. článek o editoru VIM, tak zde najdete ještě pár dalších triků. Pokud jste nečetli 1. díl, doporučuji si jej prečíst. Případně se vám budou hodit nějaké znalosti o užívání tohoto editoru. Už to nebude sice tak výživné jako předchozí díl, ale ještě se pár věcí najde.

Při vlastní korektuře 1. dílu jsem našel pár věci, které se do něj nevešly. Během té doby jsem prošel manuál k VIMu a něco ještě našel.

Bloky dat rychleji

Zde jsem udal příklad s mazáním. Není problém písmenko d v příkazu nahradit písmenem v a označujete takto bloky. Tak třeba viB ⇒ a označíte vše mezi závorkami {} v závorkovém bloku, v němž jste.

Zde nabízím malou pomůcku. Písmena a, i.

Foldy

Doslova se jedná o zabalení nějakého obsahu bloku. Máte-li dlouhou funkci v kódu, tak něco odlaďovat není žádný med. A skákat o dalších pár set řádků vpřed či vzad a pořád chápat o co jde, to je někdy obtížné. Případně pokud některé části kódu nepoužíváte, avšak v kódu se potřebujete pohybovat. Je to hezká hračka, nenašel jsem však pro mě příliš velké využití, protože se většinou pohybuji ve zdrojácích vlastní výroby a vyhledávání na základě dobrého označení jmen a volby set incsearch mi nedělá problémy.

Syntaxe k souborům

I když se příliš neorientují v konfiguračních souborech VIMu, tak jsem k tomu byl částečně donucen. Je to už velká magie, tak jako funkce, a k velkému čarování je třeba také hodně času na učení a ten já příliš nemám.

Pracuji s databázemi a jako vývojový nástroj používám psql. Externí editor VIM. Při editaci exitujícího sql souboru se mi syntaxe zobrazuje. Při založení nového souboru však ne. psql si vytváří dočasně soubory ve tvaru /tmp/psql.edit.<číslo>.<číslo>

Obdobným příkladem je links, kde si externí editor (pokud máte jako výchozí VIM) vytváří dočasně soubory /tmp/links.<číslo>.<číslo>. Pokud editujete html objekt textarea. Dost mi vadilo, že nevidím syntaxi. Především v psql. U dočasných souborů jsem mimo zvýraznění syntaxe html ještě dodal zalamování řádků na 75. znaku.

Řešení je zde

Vytvořte si ve svém domovském adresáři soubor .vim, pokud ho zde ještě nemáte, a založte soubor filetypes.vim. Pak stačí překopírovat do něj tento obsah.

if exists("did_load_filetypes")
finish
endif

augroup filetypedetect
au! BufRead,BufNewFile psql.edit.* setfiletype sql
au! BufRead,BufNewFile /tmp/links* setfiletype html tw=75
augroup END

Doslova se jedna o autopříkazy, které se provedou po načtení souboru. Není tedy problém potom přidat ještě doplnění nějakého textu či nahrazovačky.

Editace schémat

Občas potřebujete vytvářet schémata či obrázky ze znaků. Ne vždy je žádoucí, aby vám skákal vím pouze po odstavcích a místech, kde je něco napsáno. Doslova se pohybujete po celé pracovní ploše, nejen po části, která je vymezena místem, na němž jste něco napsali, či kde je text (nebo prázdné místo). Obvykle se tento režim používá pouze u sloupcových bloků Ctrl+V.

Zde pomůže volba set virtualedit=(block,insert,all). Jedná se například o editaci těchto údajů.

     A B C D
     A B C D

     A B C D

Formátování zdrojáků

Občas potřebujete zformátovat zdrojové kódy. Jedna se především o formátování odstavců a bloků v částech mezi závorkami.

Někdy se v zdrojácích vyskytne příliš mnoho podobných textových řetězců. Není příliš pohodlné se jimi prokousávat a neustále vyhledávat další, dokud nenajdete požadovaný výsledek hledání. Částečně se to dá vyřešit tak, že hledáte třeba konce slov či poslední písmenka s koncem slov. Doslova se naučíte při vyhledávání v textu uvažovat úplně jinak. Třeba příkaz: najdi druhé podtržítko od konce slova, za nímž následuje znak 2.

Podstatně příjemnější cesta je vyhledávat co nejpřesněji. Je to trocha magie, ale stojí určitě za to.

Píšeme opačné

Toto je spíše taková hračka, ale může se hodit. Prakticky ji využijete na editace arabských textů. Případně některá data se čtou lépe z opačné strany. Jedna se o psaní a zobrazování pozpátku.

Logika VIMu

Pokud děláte ve VIMu už nějaký čas, možná na první pohled nacházíte v tomto editoru logiku ovládání. To je jedna z věci, které mě na tomto editoru fascinují. Nepokládám se za nějakého odborníka. Uvedu zde pár věci, které vám mohou pomoci při naučení. Biflovat se nemá smysl. A zde je právě intuitivnost skrytá v logice. Občas z toho bolí hlava, nicméně efektivita je obrovská. Podstatně lepší než obouručně Ctrl+Alt+<F10>, které by se mělo spíše než u počítačů používat u lisu, aby člověk nepřišel při zapínání o ruce.

Náměty k diskusi:

Související články

Editor VIM prakticky
Kvíz: Co víte o Vimu?

Odkazy a zdroje

VIM.org

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

29.9.2003 08:35 gmmns
Rozbalit Rozbalit vše Super clanek
Odpovědět | Sbalit | Link | Blokovat | Admin
Diky
29.9.2003 09:54 Tomas
Rozbalit Rozbalit vše preklep ...
Odpovědět | Sbalit | Link | Blokovat | Admin
"Regularni vyraz" .... regulerni je trochu neco jinyho ;o]]
29.9.2003 11:48 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše preklep ...
moje chyba. autor to napsal puvodne spravne. pri korekture jsem to opravil coby preklep :-(. ted jsem vytahl slovnik cizich slov a zjistil, ze opravdu existuje i slovo 'regularni'. diky.
29.9.2003 11:18 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Syntaxe k souborum, foldy
Odpovědět | Sbalit | Link | Blokovat | Admin
Problem zobrazovani syntaxe se da resit take pres modelines - na konci souboru mit neco jako
vim: set ft=sql tw=75:
a mit zapnutou option modeline. Nevyhoda: nutno mit v kazdem souboru (ale kdyz clovek pouziva kostry...), mozna bezpecnostni implikace; vyhoda: nezavislost na adresari, pripone, a pripadne i pocitaci (pokud se vy ci soubor pohybujete mezi vice). Kdyz uz mluvim o modelines a v clanku byla zminka o foldech, uzitecne muze byt mit nastaveno v modelines foldmethod=marker a pripadne jeste foldmarker a commentstring; pak vidi foldy kazdy, kdo ma modelines zapnute tak, jak autor zamyslel, a pri vytvareni novych se automaticky pridavaji ony znacky.
29.9.2003 16:53 Primitif
Rozbalit Rozbalit vše mazani konce radky
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim, resim s vimem nasledujici problem. Nejde mi smazat konec radku -- na zacatku radku stisku ,,del`` a zacnou mi mizet jednotlive znaky, ale kdyz dojde na konec radku, tak odmita pokracovat na dalsim... dd sice funguje, ale neni to ono... Poradite?
29.9.2003 17:21 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše mazani konce radky
:help <Del> odkaze na 'whichwrap' a tam je odpoved:
set ww+=l
29.9.2003 17:36 Primitif
Rozbalit Rozbalit vše mazani konce radky
Jestli je to tak jednoduche, tak ze omlouvam a zaroven dekuji... :) Nejak me nenapadlo hledat to pod ,,del``
30.9.2003 08:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše mazani konce radky
zkus J To je taky zajimavy příkaz.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.9.2003 18:07 Petr Mach
Rozbalit Rozbalit vše jednodussi reseni
Odpovědět | Sbalit | Link | Blokovat | Admin
Neco k casti: Řešení je zde Prislusne au prikazy staci vlozit do standardniho cfg. souboru ~/.vimrc (na unixech) nebo _vimrc (windows, dos). Par veci o VIMu mam na: http://iglu.cz/wraith/ A pak take k nemu existuje diskuzni forum: http://www.mageo.cz/.chatroom/39103 Do ktereho mohou psat i anonymove, neni treba se registrovat.
30.9.2003 01:27 User682 | skóre: 38 | blog: aqarium | Praha
Rozbalit Rozbalit vše jeste jeden trik
Odpovědět | Sbalit | Link | Blokovat | Admin
zdravim,
do clanku se mi nejak nedostal jeste jeden trik. a to je pouziti bashovyho prikazu seq a vystupu do vimu.
obcas jsem potreboval vygenerovat radu cisel. a treba jen sudych.
vice man bash a treba ve vimu prikaz :r! seq 1 4 20.
bye goldenfish
30.9.2003 15:50 ll.cz/sw/ed's/vi udržovač
Rozbalit Rozbalit vše Další přihřívaná polívčička
Odpovědět | Sbalit | Link | Blokovat | Admin
Kupa platných odkazů pro ty, kterým nestačí ":help" --> http://ll.cz/software/editory/vi/
30.9.2003 20:16 boss
Rozbalit Rozbalit vše Poradte mi prosim
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevi nahodou nekdo, jak skocim ve vimu o X znaku doprava (nebo doleva) od aktualni pozice kurzoru? Mam vsak na mysli skok pres vice radku... :( Dejme tomu o 3032 znaku doprava... pomoc....
1.10.2003 09:05 _j
Rozbalit Rozbalit vše Poradte mi prosim
ve VIMu je všechno jednoduché --> jak začneš přemejšlet, zahrabeš se. Udělej to nejjednodušejc, jak to jen jde: kupř 3032h [ten poslední znak je h cili posun doleva. l te mrskne doprava]
Wow! tohle preci neni Emacs! :-)
1.10.2003 09:42 boss
Rozbalit Rozbalit vše Poradte mi prosim
To je pravda... Ale pokud to vyzkousite, kurzor se v pohybu zarazi o konec nebo zacatek radku a dale nepokracuje.... :(
1.10.2003 10:10 _j
Rozbalit Rozbalit vše Poradte mi prosim
...pokud to zkusim, tak samozrejme kurzor skoci i pres konce radku az na ten 30.. znak. [Nebojte, ze bych to pro jistotu nevyzkousel :-)]
Rekl bych, ze nemate nastaveno :set ww=<,>,h,l
1.10.2003 10:15 boss
Rozbalit Rozbalit vše Poradte mi prosim
Vrele diky!
1.10.2003 10:20 _j
Rozbalit Rozbalit vše Poradte mi prosim
vřelé není zač! :-)
30.9.2003 21:29 Drak
Rozbalit Rozbalit vše .vim je asi adresar ne?
Odpovědět | Sbalit | Link | Blokovat | Admin
Neni nahodou .vim adresar? :) Jinak clanek je fajn, VIM pouzivam uz docela dlouho, ale spoustu techhle vychytavek neznam. Diky za vyborny clanek, dofam ze bude nekdy dalsi!
1.10.2003 08:52 _j
Rozbalit Rozbalit vše .vim je asi adresar ne?
Věř Draku, že nejlepší "článek" je přečíst si odzačátku dokonce :help. Pak už žádné další články nebudeš postrádat :-)
4.10.2003 18:23 User682 | skóre: 38 | blog: aqarium | Praha
Rozbalit Rozbalit vše .vim je asi adresar ne?
zdravim,
diky. ale na dalsi clanek o vimu si pockate. zatim nevim, co by se do nej dalo dat. a predevsim se musim dost z techto veci naucit ci zkusit. mozna popsat nejaka makra. ale tem jsem zatim neprisel na chut.uvidim, jak bude cas a jak bude o cem psat co se tyce vimu.
ale k psani clanku bych se mel uz snad nejak casteji dostat.
bye goldenfish
theo avatar 1.10.2003 07:47 theo | skóre: 15 | Rožnov ... hádej který?
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
Odpovědět | Sbalit | Link | Blokovat | Admin
hezky se to rozjizdi, tak se hnedle taky zeptam: nechce se mi verit, ze by tak genialni editor jako je (g)vim neumel ukladat sessions. mam otevrenych 5 souboru na ruznych pozicich a potrebuju treba rebootovat, nebo se odhlasit ze serveru. no a abych je priste nemusel vsechny otvirat rucne, tak zadam nejaky magicky prikaz a ono si to zapamtuje, ze pod jemenem 'wwwork' mi ma otevrit ty a ty soubory na tech a tech pozicich. a esce cosi sem scel, ale pac sem to zapomnel co, toz sa optam az si vzpomenu...
Sine ira et studio
1.10.2003 08:55 _j
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
...a díval jsi se na :help session?

už jsi si vzpomněl? :-)

theo avatar 1.10.2003 10:11 theo | skóre: 15 | Rožnov ... hádej který?
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
nevzpomnel, ale diky za rtfm :)) (tak to vypada, kdyz clovek prileze po dvanactce v noci z prace a zacne se na neco ptat v diskuzich). btw: shanim praci (pocitace, unix, administrace, ev. nejaka web developerina)? nemate nekdo neco? nejlip v brne :)) (fuj, jeste sem zacnu cpat inzeraty :).
Sine ira et studio
1.10.2003 10:24 _j
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
no zrovna ja mam prace na kompjutru az nad hlavu...
nechtel byste mi pomoct? :-)
theo avatar 3.10.2003 00:26 theo | skóre: 15 | Rožnov ... hádej který?
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
a zaplatite mi to? :)
Sine ira et studio
3.10.2003 06:35 _j
Rozbalit Rozbalit vše ni, ja bych mel dotaaz
o odmene sice puvodne nebyla rec, ale ano: odmenou Vam bude pocit z dobre vykonane prace.
2.10.2003 10:02 Vuk
Rozbalit Rozbalit vše K foldům
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen takovou poznámku: možná některým z nás slovo "fold" připomíná starší české slovo "fald" (samozřejmě z němčiny). Jeho význam, záhyb, myslím dost přesně odpovídá vimáckému foldu. Faldy dříve bývaly nejen na břiše nebo na šatech, ale třeba i ve tváři :-)
2.10.2003 18:22 Miloslav Ponkrác
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
Odpovědět | Sbalit | Link | Blokovat | Admin
1) Pracuji s vim převážně ve Windows. Už mě trápí prznění českých znaků při vložení ze schránky Windows. Byla to chyba vim verze 5, ve verze 6.0 a 6.1 to pracovalo správně. Ve vimu verze 6.2 to zase przní české znaky. 2) Kdyby vim dokázal otevírat v záložkách, jako mnohé jiné editory, nebo třeba jako Mozilla, když otevírá stránky.
3.10.2003 06:47 _j
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
ad1) Neprzni. Muzete nekam povesit vase _vimrc & co. ? Jake mate W? ad2)samozrejme ze umi: http://www.vim.org/scripts/script.php?script_id=765 --> i kdyz je to zverstvo: sahat na mys ve VI ? Fujfujfuj, receno s Nero Wolfem. GUIWoknoidy uz lidem znechutily i nadherne ":ls"...
6.10.2003 21:07 Miloslav Ponkrác
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
ad 1) Používám naprosto stejné vimrc beze změny jediného znaku od začátku. Mám Windows 2000. V některých verzích vimu čeština při přenosu schránky je v pořádku, v některých nikoli. Závisí to čistě jen na verzi gvim.exe. 2) Kdo říká, že na záložky musím sahat myší? Na druhé straně myš je někdy dobrá věc. Každopádně za odkaz velmi velmi děkuji, zdá se, že je to přesně ono. Ještě prozkouším. P.S.: Mě příkaz ls strašně znechutilo pár serverů, na kterých jsem přes SSH spravoval databáze, a správce Linuxu to nastavil tak, že soubory se vypisují modře. Strašně špatně se mi to čte. A tak jsem po dlouhé době zvolil mc, a zjistil jsem, že je to lepší, než ls. Ale mimochodem, pro člověka zvyklého na komfortní DOSové commandery z textového režimy je mc dost neobratný. Přesto díky za něj. můj vimrc:

set nocompatible
set exrc
set secure
set backup
set backupext:.bak
set confirm
set fileformat:unix
set fileformats:dos,unix
set errorbells
set backspace:2
set autoindent
set tabstop:4
set expandtab
set showmode
set showcmd
set ruler
set history:100
set nogdefault
set showmatch
set nojoinspaces
set ignorecase
set smartcase
set incsearch
set scrolloff:1
set sidescroll:1
set sidescrolloff:1
inoremap gj
inoremap gk
set background=dark
set hlsearch
7.10.2003 12:07 _j
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
ad1) ano, je to mozne, ze je nektera kompilace "gvim.exe" k necemu na win nachylnejsi (btw stoji za to zkouknout i :ve)
Zakopany pes je, zda se, v tom ff a ffs (na win masine) --> doporucuju to "unix" zapinat rucne jen kdyz je treba. [Podobne problemy odeznely po vyhozeni ff z vimrc. Zkuste to: trebas to bude ono (a trebas ne :)]
7.10.2003 17:25 Miloslav Ponkrác
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
Tak jsem zkusil vyhodit ff i ffs, a bohužel. Nic se nezměnilo: Poíliš žlu?oueký kuo úpil iábelské ódy Jenže pak mě to začalo zajímat, a začal jsem blbnout s nastavením jazyka, ködování, apod.. A nakonec jsem zjistil, že chyba vůbec není ve vimu!!! Že vim to bere v pořádku, jenže můj prohlížeč souborů od české firmy (!!!) mrší občas češtinu, pokud jí zkopíruji do schránky! Pokud jsem pracoval se schránkou s jinými programy a vimem, je vše v pořádku! Tímto se velmi omlouvám. A děkuji za trknutí. A taky děkuji za záložky.
8.10.2003 06:50 _j
Rozbalit Rozbalit vše Kdybych jen dokázal vyřešit tohle:
Vim rulez

BTW: Jak uz tu bylo vyse zmineno, doporucenihodna je tudlencta vimózní diskuze

22.3.2004 18:26 sup
Rozbalit Rozbalit vše editace vice souboru najednou
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak muzu do vice souboru pridat napriklad na prvni radku urcitou vetu? Ocekaval bych neco ve spojeni s :argdo

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.