25.3. - Cvičení VIM

  1. V některé z minulých hodin jsme si pomocí příkazů:
      echo '#!/bin/sh' > pozdrav
      echo 'echo ahoj' >> pozdrav
      echo echo `whoami` >> pozdrav 
      chmod u+x pozdrav
    
    Vytvořte si ho znovu, ať máme všichni stejnou podobu tohoto skriptu.
    Vytvořili jsme první jednoduchý skript, který nás pozdravil. Problém byl, že předposlední
    řádek je špatně - zdraví tvůrce a ne toho kdo skript spustil. Upravíme ho pomocí vim na tento tvar:
    #!/bin/sh
    echo -n "ahoj "
    echo `whoami`
    
    a to takto:
    vim pozdrav
    jsme v příkazovém režimu
    :set number (resp. :set num+tabelátor) - zapneme čísla řádků
    stále jsme v příkazovém režimu
    3+[SHIFT]+g - skočíme na 3.řádek
    dd - tento řádek smažeme
    /ahoj - najdeme slovo ahoj
    i - přepneme se do vkládacího režimu
    upravíme řádek na tvar:
    echo -n "ahoj␣"
    echo `whoami`
    ESC - přepneme se do příkazového režimu
    :set nonumber - vypneme číslování řádků
    :w - soubor uložíme
    ^z - přepneme vim na pozadí
    ./pozdrav - vyzkoušíme jestli skript správně funguje
    fg - zpět do vim
    :q - ukončíme vim
    

  1. Zpracování bodu 1. cvičení z 1.3. pomocí vim: rm -rf fimfarum smazání předchozího částečného zpracování
    tar xzvf fimfarum.tar.gz rozbalení souborů
    cd fimfarum
    file * > zpracuj
    vim zpracuj editace souboru zpracuj ve vim:
    ESC
    [SHIFT]+g - skok na konec souboru
    :%s/:␣/./  - záměna :␣ za .
    1 [SHIFT]+g - skok na 1.řádek
    fd - najdi znak "d" řádku
    ^v - začni označovat sloupcový blok
    [SHIFT]+g skok na konec souboru
    5↑ - o 5 řádků nahoru (poslední je "příliš" krátký)
    $ - skok na konec řádku
    d - smaž označený blok
    [SHIFT]+g
    fd
    ^v
    5↑
    $d
    [SHIFT]+g
    :%s/^/␣/ na začátek všech řádků jsem přidal mezeru, kurzor je na "s" od soubor40
    ^v
    1 [SHIFT]+g
    f1 - skok na znak "1"
    y - kopie bloku do schránky
    ← - o znak do leva
    P - vložím blok před aktuální pozici
    :%s/^/mv / - záměna začátku řádku za mv␣
    [SHIFT]+g
    $
    ^v
    4←
    1 [SHIFT]+g
    f.
    u - vybraný blok převedu na malá písmena
    :wq - uložím a skončím
    
    sh zpracuj
    mkdir obrazky
    mkdir dokumenty
    mv *pdf ./dokumenty
    mv s* ./obrazky

  1. zkoprírujte si soubor /usr/html/NMIN266/3/HANOJ.php do ~/NMIN266

  1. zkopírujte si soubor /usr/html/NMIN266/3/hesse-demian.txt do ~/NMIN266

  1. Z /usr/html/NMIN266/1/ si zkopírujte znovu soubor seznam1.txt (cp /usr/html/NMIN266/1/seznam1.txt ~/NMIN266/). Tento soubor si otevřete ve vim tj. seznam ve tvaru:
    prijmeni jmeno, „něco“.
    Chci ho mít setříděný podle příjmení a ve tvaru jmeno prijmeni, a to „něco“
        ESC - dostanu se do příkazového režimu
        :% !sort - celý soubor "proženu" příkazem systému sort
        ESC … - dostanu se do příkazového režimu
        qa - definuji makro pro písmenko a
        první řádek je
        Prijmeni1 Jmeno1, "nějaké další informace"
        ^ skočím na začátek řádku
        dw jsem smazal Prijmeni1 (mám ho ve schránce)
        e skočil jsem na konec slova
        a␣ připsal jsem mezeru za prijmeni1
        ESC návrat do příkazového režimu
        p jsem vložil jmeno1
        x smažu mezeru, která je za příjmením
        ↓ přesunu se na nižší řádek
        q skončím definici makra pro 'a'
        druhý řádek je:
        Prijmeni2 Jmeno2, … - jsem někde v rámci slova Jmeno2 v příkazovém režimu
        [SHIFT]+g skočím na konec souboru a zjistím, že tento soubor má 718řádek
        ’’ skočím zpět na 2.řádek
        717@a 717 zopakuj makro definované pro klávesu a
        … a je hotovo
        :w - soubor uložím
        1 [SHIFT]+g skočím na začátek souboru
        
    Vytvoříme makro na smazání veškerého textu na řádku počínaje znakem ","
    (mazání od určité pozice na konec řádku je d$) tj.
       qb - definuji makro pro písmenko b
       ^ - skok na začátek řádku
       f, - na řádku najdu čárku
       d$ - smažu vše až do konce řádku
       ↓  - přesunu se o řádek níž
       ESC
       q - ukončení záznamu makra
       [SHIFT]+g
    
    zjistím, že soubor má 718 řádků
    2 [SHIFT]+g
    
    skok na 2.řádek (mohl bych také použít '' tj. dva apostrofy pro skok na místo "kde jsem byl před tím než jsem skočil na konec řádku"
    717@a
    
    makro "a" spustím 717 ...
    ...? proč ale skončil po 29. opakování ....
    soubor seznam1.txt uložte pod názvem seznam-prosty.txt a pošlete mi ho mailem
    ESC
    :w seznam-prosty.txt  - uložím pod příslušným názvem
    :q! - skončím bez uložení původního souboru
    mail -s seznam richter@karlin.mff.cuni.cz < seznam-prosty.txt
    

  1. Makra ve .vimrc