Skip to content

Latest commit

 

History

History
949 lines (683 loc) · 34.9 KB

vim.md

File metadata and controls

949 lines (683 loc) · 34.9 KB

Vim

!Štítky: {program}{editor}{ovládání} !OblíbenáZaklínadla: !ÚzkýRežim: zap

Úvod

Tato kapitola se věnuje editoru Vim. Vim je textový editor (původně terminálový, ale nabízí v samostatném balíčku také GUI), práce s nímž je založena na přepínání mezi řadou režimů, z nichž nejdůležitější jsou základní režim, ve kterém se zadávají příkazy, kterými uživatel ovládá editor, a vkládací režim, v němž uživatel píše text.

Tato verze kapitoly se nevěnuje stylu „práce s objekty“ a vyhýbá se funkcím, jejichž činnost závisí na konkrétní syntaxi editovaného textu (např. skok na deklaraci proměnné pod kurzorem). Rovněž nepokrývá doplňování s našeptáváním (autocomplete), skládání (folding), režim srovávání „vimdiff“, specifika GUI varianty (gvim) a zásuvné moduly (plug-ins). Nedostatečně pokrývá příkaz „g//“.

Definice

Režimy editoru Vim

  • Základní režim (také „normální mód“, „command mode“) je výchozí po spuštění programu. Každé zaklínadlo v této kapitole, není-li uvedeno jinak, předpokládá zadání v základním režimu. Z každého jiného režimu se můžete vrátit zpět do základního režimu jedním nebo více stisky klávesy {Esc}.
  • Režim vkládání je režim, ve kterém se zapsané znaky vkládají do editovaného textu. Jeho variantou je režim přepisování, kdy zapsané znaky přepisují stávající znaky textu.
  • režimu příkazové řádky místo textu otevřeného souboru upravujete příkaz, který bude vykonán teprve po potvrzení klávesou {Enter}. Do tohoto režimu vstoupíte ze základního režimu klávesou „:“.
  • režimu výběru posouváním kurzoru vytváříte výběr, tedy úsek textu, na který pak aplikujete nějakou operaci. Pokud to váš terminál podporuje a zapnete ovládání myší, budete moci výběr vytvářet i pomocí myši.

Další režimy můžete najít v dokumentaci, ale pravděpodobně o nich nyní nepotřebujete vědět.

Další pojmy

  • Kurzor je značka označující jednoznačnou pozici v upravovaném textu, k níž se budou vztahovat prováděné operace.
  • Aktuální řádek je řádek upravovaného textu, na kterém se nachází kurzor.
  • Pohled je výřez z upravovaného textu zobrazený uživateli; vždy zahrnuje aktuální řádek. Normálně okno editoru obsahuje pouze jeden panel a ten obsahuje pouze jeden pohled. Příslušnými příkazy však lze panel rozdělit na více pohledů a lze také otevřít další panely a ty také rozdělit. Nicméně uzavřením posledního pohledu z panelu se vždy uzavře i panel a uzavřením posledního panelu se uzavře celý editor.
  • Vim má 26 schránek, označených písmeny anglické abecedy „a“ až „z“. Do těchto schránek se ukládají vyjmuté texty (které můžete později vložit na jiné místo souboru) a makra (která můžete později spustit). Při zápisu do schránky můžete její označení uvést malým písmenem (pak se stávající obsah přepíše) nebo velkým písmenem (pak se nový obsah připojí za stávající).
  • Registr je schránka označená písmenem (malým či velkým), nebo zvláštní registr označený číslicí či speciálním znakem.

!ÚzkýRežim: vyp

Zaklínadla: Posuny kurzoru a pohledu, záložky

Posun kurzoru jen v rámci řádky

# vlevo/vpravo o 1 znak
{}
{}

# vlevo/vpravo o N znaků
{N}{}
{N}{}

# na začátek/konec řádky
{Home}
{End}

# na následující/předchozí výskyt určitého znaku
[{počet-opakování}]f{znak}
[{počet-opakování}]F{znak}

# před následující/předchozí výskyt určitého znaku
[{počet-opakování}]t{znak}
[{počet-opakování}]T{znak}

# zopakovat poslední zadaný příkaz „f“, „F“, „t“ či „T“
[{počet-opakování}];

# na první nebílý znak řádky
^

# do konkrétního sloupce (logického od 1/znakového od 0)
// V případě logických sloupců se tabulátor počítá jako 1 či více sloupců podle své šířky; v případě znakových sloupců se počítá vždy jako jeden znak.
{číslo-sloupce}|
{Home}{číslo-sloupce}{}

Posun kurzoru na jinou řádku

PNZ = první nebílý znak

# nahoru/dolů o 1 řádek
{}
{}

# nahoru/dolů o N řádek
// K posunu kurzoru nahoru či dolů po řádkách obrazovky místo po řádkách souboru slouží příkazy „gk“ a „gj“.
{N}{}
{N}{}

# řádek číslo N, PNZ (alternativy)
{N}G
:{N}{Enter}

# na začátek/střed/konec pohledu, PNZ
H
M
L

# na první/poslední řádku souboru, PNZ
gg
G

# na N-tý řádek pohledu, PNZ
{N}H

# na následující/předchozí řádku, PNZ
{Enter}
{}^

# na následující prázdný/neprázdný řádek
[{počet-opakování}]/^${Enter}
[{počet-opakování}]/^.{Enter}

Vyhledávání

\c = ignorovat velikost písmen; /e = kurzor nastavit na poslední znak shody (jinak na první).

# najít následující/předchozí výskyt podřetězce
// V podřetězci je nutno odzvláštnit zpětná lomítka!
/[\c]\V{podřetězec}[/e]{Enter}
?[\c]\V{podřetězec}[/e]{Enter}

# najít následující/předchozí shodu s regulárním výrazem
// Poznámka: vim používá vlastní syntaxi regulárních výrazů, která je nejpodobnější základním regulárním výrazům. Při použití této funkce buďte opatrní a očekávajte problémy se složitějšími výrazy.
/[\c][\v]{regulární výraz}[/e]{Enter}
?[\c][\v]{regulární výraz}[/e]{Enter}

# zopakovat poslední vyhledávání stejným/opačným směrem
n
N

Záložky

# nastavit záložku na pozici kurzoru
// Jako označení záložky můžete použít malá písmena anglické abecedy („a“ až „z“.)
m{písmeno}

# přejít kurzorem na pozici záložky
`{písmeno}

# vypsat nastavené (a systémové) záložky
:marks{Enter}

Ostatní posuny

# posun na znak, který je zobrazený nad/pod aktuálním
[{počet-opakování}]gk
[{počet-opakování}]gj

# skok na odpovídající párovou závorku
// Tento příkaz funguje (za předpokladu správného spárování závorek) přinejmenším pro závorky (), [] a {}.
%

# skok na poslední upravenou pozici
g;

Posuny po slovech

Programátorské slovo“ je sekvence jakýchkoliv nebílých znaků; „standardních slovo“ je sekvence nebílých znaků, které jsou buď alfanumerické, nebo tvoří interpunkci. To znamená, že např. „a1a;;;B2B“ je jedno programátorské slovo, ale tři standardní! (Podobně „Ahoj, světe!“ jsou dvě programátorská slova, ale čtyři standardní.)

# o jedno/N „programátorských slov“ vpřed
W
{N}W

# o jedno/N „programátorských slov“ vzad
B
{N}B

# na poslední znak programátorského/standardního slova
E
e

# o jedno „standardní slovo“ vpřed/vzad
// Funguje i v režimu vkládání.
{Shift}+{}
{Shift}+{}

# o N „standardních slov“ vpřed/vzad
{N}w
{N}b

Zaklínadla: Základní

Psaní textu (vkládání a přepisování)

# psát text, počínaje znakem pod kurzorem/následujícím znakem/koncem řádky/začátkem řádky
i{(režim vkládání)}
a{(režim vkládání)}
A{(režim vkládání)}
0i{(režim vkládání)}

# vložit novou prázdnou řádku před/za aktuální a psát na ní text
O{(režim vkládání)}
o{(režim vkládání)}

# přepisovat text, počínaje znakem pod kurzorem
// Stisknete-li v režimu přepisování klávesu Backspace, obnoví se tím původně přepsaný znak.
R{(režim přepisování)}

# přepnout vkládání na přepisování/přepisování na vkládání
{(režim vkládání)}{Insert}{(režim přepisování)}
{(režim přepisování)}{Insert}{(režim vkládání)}

# vložit text opakovaně
{počet-opakování}i{text}{Esc}

Soubory, adresáře a aktivní pohled

# uložit změny a zavřít pohled (alternativy)
ZZ
:wq{Enter}

# zavřít pohled (opatrně/zahodit změny)
:q{Enter}
:q!{Enter}

# otevřít soubor (opatrně/zahodit změny)
:e {cesta}{Enter}
:e! {cesta}{Enter}

# uložit změny (v aktuálním pohledu/ve všech pohledech)
// Pokud nemáte otevřený žádný soubor, k prvnímu uložení textu musíte použít příkaz „:w“ s cestou, jinak skončíte s chybou „Žádný název souboru“.
:w{Enter}
:wa{Enter}

# znovu načíst otevřený soubor (zahodit změny)
// Tip: účinky tohoto příkazu můžete zrušit okamžitým provedením příkazu „u“.
:e!{Enter}

# vypsat/změnit aktuální adresář editoru
:pwd{Enter}
:cd {cesta}{Enter}

# vytvořit adresář
:!mkdir [-p] {cesta}{Enter}

# zapsat kopii souboru
:w {cílová/cesta}{Enter}

# zapsat rozsah řádek do souboru (obecně/příklad)
:{první-zapsaná},{poslední-zapsaná}w {cílová/cesta}{Enter}
:3,17w prehledy/radky.txt{Enter}

# načíst soubor a vložit za aktuální řádek
:r {cesta/k/souboru}{Enter}

# otevřít soubor jen pro čtení
:e[!] {cesta}{Enter}:set ro{Enter}

# ukončit editor (uložit změny/opatrně/zahodit změny)
:wqa{Enter}
:qa{Enter}
:qa!{Enter}

Kopírování, mazání a schránky

Tip: jako výchozí používejte schránku „p“.

# aktuální řádka (smazat/vyjmout/zkopírovat/nahradit textem)
dd
"{schránka}dd
"{schránka}yy
["{schránka}]cc{text}{Esc}

# znak pod kurzorem (smazat/vyjmout/zkopírovat/nahradit znakem/nahradit textem)
x
"{schránka}x
"{schránka}yl
r{znak}
["{schránka}]cl{text}{Esc}

# znaky do konce aktuální řádky (smazat/vyjmout/zkopírovat/nahradit textem)
d{End}
"{schránka}d{End}
"{schránka}y{End}
["{schránka}]c{End}{text}{Esc}

# znaky od začátku aktuální řádky před kurzor (smazat/vyjmout/zkopírovat/nahradit textem)
d{Home}
"{schránka}d{Home}
"{schránka}y{Home}
["{schránka}]c{Home}{text}{Esc}

# aktuální řádek a všechny následující neprázdné (smazat/vyjmout/zkopírovat/nahradit textem)
d/^${Enter}
"{schránka}d/^${Enter}
"{schránka}y/^${Enter}
["{schránka}]c/^${Enter}{text}

# N řádků počínaje aktuálním (smazat/vyjmout/zkopírovat/nahradit textem)
{N}dd
"{schránka}{N}dd
"{schránka}{N}yy
["{schránka}]{N}cc{text}{Esc}

Vložit, spojit, duplikovat

# vložit obsah schránky (za aktuální pozici/před ni)
"{schránka}][{počet-opakování}]p
"{schránka}][{počet-opakování}]P

# vložit poslední smazaný či nahrazený text (za akt. pozici/před ni)
[{počet-opakování}]p
[{počet-opakování}]P

# spojit řádky (viz poznámku)
// Připojí následující řádku na konec aktuální. Pokud aktuální řádka končí znakem, který není mezera, před připojením tam mezeru vloží. Prázdný řádek nekončí žádným znakem, proto za něj mezeru nevkládá.
J

# duplikovat aktuální řádek
yy{počet-opakování}p

Externí příkazy a spolupráce s bashem

# ukončit editor bez uložení změn (opatrně/zahodit změny/uložit změny)
:qa{Enter}
:qa!{Enter}
:qwa{Enter}

# odsunout editor na pozadí
// Zpět na popředí obnovíte editor příkazem „fg“.
{Ctrl}+{Z}

# spustit externí příkaz
:!{příkaz}{Enter}

# otevřít interpret příkazové řádky (obvykle bash)
:shell{Enter}

# vykonat externí příkaz a vložit jeho standardní výstup za aktuální řádek (obecně/příklad)
:r !{příkaz} [{parametry}]{Enter}
:r !ls -lh{Enter}

# zamrznout na N sekund
// Zamrznutí můžete předčasně ukončit kombinací kláves Ctrl+C.
{N}gs

Nahradit text (příkaz „:s“)

Poznámka: parametr „kde“ u příkazu „:s“ může být: prázdný řetězec pro nahrazování v aktuální řádce; znak % pro nahrazování v celém souboru; číselný rozsah řádků (např. „5,25“) pro nahrazování na řádcích v uvedeném rozsahu „včetně“.

# nahradit první výskyt podřetězce/všechny výskyty
// V podřetězci je nutno odzvláštnit znaky „\“ a „/“!
// „c“ se před každým nahrazením zeptá a umožní vám nechtěné náhrady přeskočit.
:{kde}s/\V{podřetězec}/{čím nahradit}/{Enter}
:{kde}s/\V{podřetězec}/{čím nahradit}/g[c]{Enter}

# nahradit první shodu s reg. výrazem/všechny shody
// „c“ se před každým nahrazením zeptá a umožní vám nechtěné náhrady přeskočit.
:{kde}s/\v{regulární výraz}/{čím nahradit}/{Enter}
:{kde}s/\v{regulární výraz}/{čím nahradit}/g[c]{Enter}

Odsazení

# nastavit šířku jedné úrovně odsazení
// Výchozí hodnota je 8. Toto nastavení nezmění text, má vliv až na další operace.
:set shiftwidth={počet-mezer}{Enter}

# zvětšit odsazení řádek (alternativy)
[{počet-řádků}]>>
{(režim výběru)}[{počet-úrovní}]>

# zmenšit odsazení řádek (alternativy)
[{počet-řádků}]<<
{(režim výběru)}[{počet-úrovní}]<

# odstranit odsazení z výběru
// Funguje jen tehdy, pokud je každá řádka výběru odsazená o méně než 999 úrovní (což je pro typické textové soubory splněno).
{(režim výběru)}999<

# odstranit odsazení z aktuálního řádku
// Funguje jen tehdy, pokud je aktuální řádka odsazená o méně než 999 úrovní (což je pro typické textové soubory splněno).
V999<

Velikost písmen

# písmeno pod kurzorem (přepnout/malé/velké)
~
vu
vU

# N písmen na aktuálním řádku, počínaje kurzorem (přepnout/malé/velké)
{N}~
v{N-1}lu
v{N-1}lU

# řádka na malá písmena
Vu

# řádka na velká písmena
VU

# každé první písmeno slova velké, ostatní malá
?

Pokročilé úpravy

# odstranit každý řádek vyhovující/nevyhovující regulárnímu výrazu
:g/[\v]{regulární výraz}/d [_]{Enter}
:v/[\v]{regulární výraz}/d [_]{Enter}

Zaklínadla: Režim výběru

Režim výběru

# výběr po znacích (normální)
v{(režim výběru)}

# výběr po celých řádkách (řádkový)
V{(režim výběru)}

# sloupcový výběr
{Ctrl}+{V}{(režim výběru)}

# obnovit poslední výběr
// Např. po nechtěném stisknutí Esc.
gv{(režim výběru)}

# přepnout na opačný konec výběru
{(režim výběru)}o{(režim výběru)}

# ve sloupcovém výběru přepnout do opačného rohu na stejném řádku
{(režim výběru)}O{(režim výběru)}

Operace nad jakýmkoliv výběrem

# smazat
{(režim výběru)}d

# vyjmout/zkopírovat
{(režim výběru)}"{schránka}d
{(režim výběru)}"{schránka}y

# celý výběr na malá/velká písmena/přepnout velikost písmen
{(režim výběru)}u
{(režim výběru)}U
{(režim výběru)}~

# nahradit (jen normální a řádkový výběr!)
{(režim výběru)}c{(režim vkládání)}

# nahradit všechny znaky určitým znakem
{(režim výběru)}r{znak}

Operace nad řádkovým výběrem

# spojit řádky
{(režim výběru)}J

# profiltrovat externím příkazem
{(režim výběru)}!{příkaz s parametry}{Enter}

# zvětšit/zmenšit odsazení
{(režim výběru)}[{počet}]>
{(režim výběru)}[{počet}]<

# automaticky přeformátovat řádky na šířku okna
{(režim výběru)}gq

# nahradit text
// Pro význam částí „co“ a „čím“ viz zaklínadla týkající se nahrazování textu. Tato varianta se od obyčejného příkazu „:s“ liší jen tím, že místo nad aktuálním řádkem pracuje nad řádky výběru.
{(režim výběru)}:s/{co}/{čím}/[{parametry}]{Enter}

Operace nad sloupcovým výběrem

# před/za každý řádek výběru vložit text
{(režim výběru)}I{text}{Esc}
{(režim výběru)}A{text}{Esc}

# nahradit každou řádku výběru textem
{(režim výběru)}c{text}{Esc}

# před/za každý řádek vložit obsah schránky
// Pozor! Toto funguje jen tehdy, pokud je obsah schránky ve „znakovém“ režimu; schránka tedy nesmí obsahovat celé řádky ani textový blok!
{(režim výběru)}"{schránka}P
{(režim výběru)}"{schránka}p

Zaklínadla: Ostatní

Historie změn

# zopakovat poslední provedenou změnu na aktuální pozici
[{počet-opakování}].

# vrátit poslední změnu (zpět)
u

# znovu provést vrácenou změnu (znovu)
{Ctrl}+{R}

# vrátit poslední upravovaný řádek do původního stavu
// Poznámka: Pozor! Tento příkaz je sám o sobě změnou; k jeho odvolání použijte příkaz „u“, nikoliv Ctrl+R!
U

Makra

Tip: jako výchozí schránku pro makra používejte schránku „q“.

# nahrávat prováděné stisky kláves jako makro
// Zadáte-li schránku velkým písmenem, nahrané stisky kláves se připojí ke stávajícímu obsahu daného makra.
q{schránka}{stisky kláves}q

# spustit makro
[{kolikrát}]@{schránka}

# znovu spustit poslední spuštěné makro
[{kolikrát}]@@

Správce souborů

# otevřít správce souborů (v pohledu nad/pod/vlevo/vpravo/na novém panelu)
:Sex{Enter}
:Hex{Enter}
:Vex{Enter}
:Vex!{Enter}
:Tex{Enter}

# otevřít soubor/adresář ze správce souborů
!: Nastavte kurzor na název souboru.
{Enter}

# přejít o adresář výš
{(ve správci souborů)}{-}

# zavřít správce souborů (alternativy)
{(ve správci souborů)}ZZ
{(ve správci souborů)}:q

Zvýraznění syntaxe

# zapnout/vypnout zvýraznění syntaxe
:syntax on{Enter}
:syntax off{Enter}

# ručně nastavit syntaxi
:setfiletype {syntaxe}{Enter}

# vypsat seznam podporovaných syntaxí
:setfiletype{Space}
{Ctrl}+{D}

# zvýrazňovat klíčové slovo jako klíčové slovo/identifikátor/funkci/operátor
:syntax keyword Keyword {slovo}{Enter}
:syntax keyword Identifier {slovo}{Enter}
:syntax keyword Function {slovo}{Enter}
:syntax keyword Operator {slovo}{Enter}

# vypsat platná pravidla zvýrazňování syntaxe (není pro začátečníky)
:syntax list{Enter}

Ostatní

# zobrazit kódovou (číselnou) hodnotu znaku pod kurzorem
ga ⊨ <ž> 382, Hex 017e, Octal 576

# inkrementovat/dekrementovat celé číslo pod kurzorem
{Ctrl}+{A}
{Ctrl}+{X}

# vložit název otevřeného souboru před/za kurzor
"%P ⊨ test.txt
"%p

Zaklínadla: Pohledy a panely

Posun pohledu

# o stránku nahoru/dolů
{PageUp}
{PageDown}

# aktuální řádku doprostřed pohledu
zz

# o půl okna nahoru/dolů
{Ctrl}+{U}
{Ctrl}+{D}

# o řádek nahoru/dolů
{Ctrl}+{Y}
{Ctrl}+{E}

# na začátek/konec souboru
gg
G

# aktuální řádek na horní/dolní okraj pohledu
zt
zb

# o N znaků vlevo/vpravo (jen při vypnutém zalamování)
{N}zh
{N}zl

Práce s rozděleným panelem

# rozdělit panel a v novém pohledu (nad stávajícím/vlevo od stávajícího) otevřít jiný soubor
:split {cesta/k/souboru}{Enter}
:vsplit {cesta/k/souboru}{Enter}

# přepnout zaměření o pohled nahoru/dolu/doleva/doprava
{Ctrl}+{W}{}
{Ctrl}+{W}{}
{Ctrl}+{W}{}
{Ctrl}+{W}{}

# rozdělit panel na pohledy nad sebou/vedle sebe
:split{Enter}
:vsplit{Enter}

# otevřít nový prázdný pohled nad aktivním/vlevo od aktivního
:new{Enter}
:vnew{Enter}

# nastavit výšku aktivního pohledu
:res {počet-řádek}{Enter}

# nastavit všechna rozdělení rovnoměrně
{Ctrl}+{W}{=}

# nahradit aktivní pohled novým terminálem
// Zdá se, že jediný způsob, jak se z pohledu terminálu dostat, je klávesová zkratka „Ctrl+WW“, jiné kombinace v něm nefungují.
:term ++curwin

# rotovat pohledy
{Ctrl}+{W}{R}

Práce s více panely

# otevřít nový panel (prázdný/se stejným souborem jako v aktivním pohledu/s jiným souborem)
:tabnew{Enter}
:tabnew %{Enter}
:tabnew {cesta/k/souboru}{Enter}

# přepnout se na další/předchozí panel
gt
gT

# zavřít panel
// Obvykle panel uzavřete uzavřením posledního pohledu v něm příkazem „:q“.
:tabclose{Enter}

Zaklínadla: Nastavení

Obecně

# nastavit volbu typu „ano/ne“ (zapnout/vypnout/přepnout)
:set {volba}{Enter}
:set no{volba}{Enter}
:set inv{volba}{Enter}

# nastavit číselnou či textovou volbu
// Hodnota může být prázdná. Pokud textová hodnota obsahuje bílé či speciální znaky (kromě tečky a čárky), musíte je odzvláštnit zpětným lomítkem; použití uvozovek vim, zdá se, nepodporuje..
:set {volba}={hodnota}{Enter}

# zjistit hodnotu volby
:set {volba}?{Enter}

# vypsat hodnoty všech voleb
:set all{Enter}

Vzhled

# před každou řádkou zobrazit její číslo (v rámci souboru/relativní)
:set number{Enter}
:set relativenumber{Enter}

# podtrhnout aktuální řádek
:set cursorline{Enter}

# vypnout zalamování řádků při zobrazení
:set nowrap{Enter}

# zvýrazňovat nezlomitelné mezery (alternativy)
// Při použití v konfiguračním souboru „.vimrc“ nahraďte kombinace klávesy s „u“ a čtyřmi hexadecimálními číslicemi odpovídajícím znakem v kódování UTF-8.
:set list listchars=tab:\␣\␣,nbsp:_{Enter}
:set list listchars=tab:\␣\␣,nbsp:{Ctrl+V}u23b5{Enter}

# zvýrazňovat tabulátory a nezlomitelné mezery (alternativy)
// Při použití v konfiguračním souboru „.vimrc“ nahraďte kombinace klávesy s „u“ a čtyřmi hexadecimálními číslicemi odpovídajícím znakem v kódování UTF-8.
:set list listchars=tab:>\␣,nbsp:_{Enter}
:set list listchars=tab:{Ctrl+V}u27eb\␣,nbsp:{Ctrl+V}u23b5{Enter}

# zvýrazňovat všechny bílé znaky
:set list listchars=tab:{Ctrl+V}u27eb\␣,nbsp:{Ctrl+V}u23b5,space:{Ctrl+V}u00b7{Enter}

# zvýraznit sloupec s kurzorem
:set cursorcolumn{Enter}

# zvýraznit konkrétní sloupce
:set cc={číslo-sloupce}[,{další-číslo-sloupce}]{Enter}

# skrýt informace o aktuální pozici ve stavové řádce (nedoporučuji)
:set noruler{Enter}

# skrýt název aktivního režimu ve stavové řádce (nedoporučuji)
:set noshowmode{Enter}

Chování

# vypnout automatické zalamování při psaní
:set textwidth=0{Enter}

# při vyhledávání ignorovat velikost písmen
:set ignorecase{Enter}

# vypnout a smazat dočasný odkládací soubor/nastavit, kam ho uložit
:set noswapfile{Enter}
:set dir={cesta}[,{další/cesta}]...{Enter}

# zapnout automatické odsazování
:set autoindent{Enter}

# místo tabulátorů vkládat odpovídající počet mezer
:set expandtab{Enter}

# zapnout automatické znovunačtení po změně souboru mimo Vim
:set autoread{Enter}

# nechat vim nastavit titulek emulátoru terminálu (je-li to možné)
:set title{Enter}

Ostatní

# zapnout/vypnout ovládání myší (doporučuji zapnout)
:set mouse=a{Enter}
:set mouse={Enter}

# dovolit posun kurzoru mimo řádek při blokovém výběru (doporučuji)
:set virtualedit=block{Enter}

# kódová stránka souboru
// Tuto vlastnost jsem příliš nezkoušel/a. Pokud s ní nemáte zkušenosti, doporučuji překódování raději provádět příkazem „iconv“ mimo vim.
:set fileencoding={kódování}{Enter}

Příznaky

# zakázat jakoukoliv změnu textu/zápis do souboru bez !/jakýkoliv zápis do souboru
:set nomodifiable{Enter}
:set ro{Enter}
:set nowrite{Enter}

# vypnout příznak, že soubor byl změněn
:set nomodified{Enter}

Parametry příkazů

*# *
vim [{parametry}] [--] {soubor} [{další-soubor}]...
view [{parametry}] [--] {soubor} [{další-soubor}]...

!parametry:

  • ○ -o ○ -O ○ -p :: Je-li zadáno více souborů, otevře je: v pohledech nad sebou (shora)/v pohledech vedle sebe (zleva)/v panelech. Výchozí chování: Je-li zadáno více souborů, otevře se pouze první a ostatní jsou otevřeny skrytě a uživatel se na ně musí přepnout příkazem „:n“.
  • "+{příkaz}" :: Po otevření vykoná příkaz v režimu příkazové řádky (+ se nahradí „:“). Tento parametr lze zadat opakovaně, ale maximální počet je omezen. Nejčastější použití je s číslem řádky (např. „+12“).
  • ☐ -n :: Vypne použití odkládacího souboru, vše udržuje jen v paměti.
  • ☐ -u {vimrc} :: Místo běžných konfiguračních souborů (vimrc) použije uvedený.

Příkaz „view“ otevře soubor v režimu „jen pro čtení“, „vim“ ho otevře pro úpravy.

Instalace na Ubuntu

Editor Vim lze na Ubuntu doinstalovat tímto příkazem:

*# *
sudo apt-get install vim

Místo „vim“ si můžete nainstalovat balíček „neovim“, což je nová, víceméně kompatibilní implementace téhož editoru. Podle mé zkušenosti se z uživatelského hlediska liší prakticky jen odlišným výchozím nastavením.

Základní součástí Ubuntu (a mnoha jiných distribucí) je editor „vi“, což je předchůdce Vimu. V něm však většina zaklínadel z této kapitoly není použitelná.

!ÚzkýRežim: zap

Tipy a zkušenosti

  • Doporučuji komukoliv (bez ohledu na úroveň zkušeností) si alespoň jednou projít „kurz“, který spustíte příkazem „vimtutor“ (příkaz zadávejte v bashi, ne ve vimu).
  • Příkaz „c“ je velmi efektivní v kombinaci s opakováním příkazem „.“ a opakováním vyhledávání příkazem „n“.
  • Každá schránka si spolu s textem zachovává i „režim“: znakový, řádkový či sloupcový. Je-li schránka ve znakovém režimu, „p“ vloží její obsah za kurzor; je-li v řádkovém režimu, „p“ vloží její obsah za aktuální řádku; je-li ve sloupcovém režimu (což znamená, že vznikla ze sloupcového výběru), „p“ vloží její první řádku za kurzor a následující řádky na odpovídající pozice následujících řádků textu.
  • Klávesové zkratky editoru Vim jsou optimalizované pro anglickou klávesnici; proto doporučuji s tímto editorem používat rozložení kláves kompatibilní s anglickým.
  • Doporučuji nastavit si „:set number“ a „:set cursorline“. Editor s nimi podle mě vypadá podstatně lépe.
  • Většina uživatelů Vimu intenzivně používá příkazy „y“ a „p“ bez uvedení schránky; to se ovšem vyplácí jen tehdy, pokud chcete zkopírovaný text okamžitě někam vložit a pak už ho nebudete potřebovat. V ostatních případech totiž brzy narazíte na problém, že skoro jakákoliv další úprava vám „poslední smazaný text“ přepíše. Doporučuji proto si zvyknout jakékoliv úseky, které si chcete udržet delší dobu, ukládat do schránky „p“ (příkaz bude vypadat např. „"pdd“). Alternativním řešením je směrovat ostatní příkazy mazání a náhrad do zvláštního registru „_“ (např. „"_dd“).
  • Nastavení provedená příkazem „:set“ z editoru jsou platná jen do ukončení procesu. Pro trvalé nastavení pro nově otevírané instance editoru zapište příkazy „:set“ do souboru „~/.vimrc“ nebo do „/etc/vim/vimrc.local“.
  • Jeden editovaný soubor může být otevřen ve více pohledech, dokonce i na různých panelech. V těchto případech má ovšem každý pohled svůj kurzor, čehož lze někdy chytře využít.

Další zdroje informací

V začátcích je nejlepším zdrojem informací „Vim Reference: Quick Reference Guide“ a rozhodně doporučuji manuál Pavla Satrapy, nicméně pokud s editorem Vim nemáte dřívější zkušenosti, určitě si nejprve vyzkoušejte kurz spouštěný příkazem „vimtutor“.

K referenční příručce můžete získat přístup také přímo v editoru Vim příkazem „:help“, ale vzhledem k tomu, že Vim se téměř nevyvíjí, neměl by být problém použít online referenční příručku i s velmi starou verzí Vimu (ne však s „vi“).

Zákulisí kapitoly

V této verzi kapitoly chybí:

!KompaktníSeznam:

  • nic

Tato kapitola záměrně nepokrývá:

!KompaktníSeznam:

  • nic

!ÚzkýRežim: vyp