Programování v shellu
VIM - Vi IMproved

Lukáš Bařinka

Náplň cvičení

Cílem cvičení je letmé seznámení se s textovým editorem VIM
(umění vim opustit).

  • Spuštění a ukončení vim
  • Příkazový režim, vkládací režim, režim poslední řádky
  • Pohyb po souboru
  • Označit, Cut, Copy, Paste
  • Opakování příkazu
  • Externí příkazy

Spuštění a ukončení editoru

  • Editor se spouští příkazem vim
  • Často je spuštěn na základě proměnných
    EDITOR nebo VISUAL
  • Editor se ukončí sekvencí <ESC>:q!
  • Editor si vystačí se základní klávesnicí a klávesou <ESC>
  • Spuštění editoru
    
    									~vim file
    									<ESC>:q
    								
  • Spuštění grafické verze editoru
    
    									~gvim file &
    									Menu: Soubor > Ukončit
    								
  • Editace příkazové řádky v editoru (fix command)
    
    									~export EDITOR=/usr/bin/vim
    									~export VISUAL=$EDITOR
    									~fc
    									<ESC>:q
    								
  • Ukončení editoru při neuložené editaci
    
    									<ESC>:q!
    								

Režimy práce (módy)

  • Editor vim je modální:
    příkazový, vkládací režim a režim poslední řádky
  • Přepnutí do příkazového režimu pomocí <ESC>
  • Přepnutí do režimu poslední řádky pomocí : / ?
Schéma práce a přechody mezi režimy

Režim poslední řádky

  • /text - skočí na následující výskyt textu
  • ?text - skočí na předcházející výskyt textu
  • :q - ukončení editoru (pokud nejsou změny)
  • :q! - ukončení editoru (bez uložení změn)
  • :w - uložit soubor
  • :w! - přepsat soubor (read-only)
  • :w soubor - uložit soubor jako
  • :! cmd - spustí cmd v shellu
  • :r soubor - načte soubor na pozici kurzoru
  • :r! cmd - načte výstup příkazu cmd na pozici kurzoru
  • :wq :x ZZ - uložení a ukončení editoru

Pohyb po souboru

  • Pohyb kurzoru vizuálně nebo sémanticky
  • Sémantické pohyby a akce se lépe opakují
  • Pohyb textu vůči obrazovce

Pohyb kurzorem

  • gj / gk - pohyb po vizuálních (zalomených) řádcích
  • nG - skok na řádku n (jinak na konec souboru)
  • H / M / L - skok nahoru, doprostřed, dolů stránky
  • zz - vertikální vycentrování řádky
  • fx / tx - skok na/k znak x
  • :set number - zapne číslování řádků
  • :set relativenumber - relativní číslování řádků

Vizuální režim a kopírování

  • Oblast lze označit vizuálně v V CTRL-v
  • Akce se pak provádí s označenou oblastí
  • change, delete, copy, paste
  • Po akci je možné uvést příkaz skoku (dw)

Pohyb kurzorem

  • a_ - celý objekt pod kurzorem
  • i_ - vniřní část objektu pod kurzorem
  • caw - change a word
  • dit - delete inner tag
  • yas - copy a sentence
  • ci" - change inner " "
  • C/D/Y - nahradit/smazat/zkopírovat do konce řádky
  • cc/dd/yy - nahradit/smazat/zkopírovat celou řádku

Opakování příkazu

  • Před každý příkaz lze napsat počet opakování
  • Příkaz . zopakuje předchozí příkaz
  • Je výhodnější používat sémantické úpravy, lépe se opakují
  • gv - znovu označí naposledy použitou oblast
  • 5dd - smaže 5 řádek
  • 3p - vloží schránku 3krát
  • 2caw - nahradí 2 slova
  • 7itext - vloží text 7krát
  • 4. - zopakuje předchozí akci 4krát