Vim
Vim je pokročilý konzolový textový editor.
- http://www.nti.tul.cz/~satrapa/docs/vim/ - český tutoriál
- http://www.root.cz/clanky/jak-si-prizpusobit-vim/ - jak si přizpůsobit vim
- http://www.cs.swarthmore.edu/help/vim/home.html - tipy pro vim
- http://tnerual.eriogerg.free.fr/vimqrc.html - pěkná tabulka zkratek
- http://www.catswhocode.com/blog/130-essential-vim-commands - 130 příkazů
- http://vimregex.com/ - regulární výrazy Vim
Spuštění
otevře soubory v rozděleném pohledu
vim -O soubor1 soubor2
Ovládání
Editace
kombinace editace s pohybem
- d - mazání
- y - kopírování do registru
- c - smaže text a přepne se do vkládacího modu
- g~ - zamění malá/velká písmena v textu
- gu - převede text na malá písmena
- gU - převede text na velká písmena
editace
- x - smaže znak
- dat - smaže obsah mezi xml tagy (včetně tagů)
- dd - smaže řádek
- dit - smaže obsah mezi xml tagy
- D - smaže znaky do konce řádku
- p - vloží registr za aktuální pozici
- P - vloží registr před aktuální pozici
- yy/Y - vloží do registru aktuální řádek
- J - připojí následující řádek k aktuálnímu s mezerou
- gJ - připojí následující řádek k aktuálnímu bez mezery
- C - smaže vše do konce řádku a přepne se do vkládacího módu
- s - smaže aktuální znak a přepne se do vkládacího módu
- S - smaže celý řádek a přepne se do vkládacího módu
- r - přepis jednoho znaku
- R - přepisovací mód
- ~ - změní velikost znaku a posune kurzor doprava
- u - vrátí poslední příkaz
- Ctrl+r - obnoví poslední příkaz
- U - odvolá všechny změny provedené na naposledy změněném řádku
- . - opakuje poslední editační operaci
- >> - posune odsazení řádku doprava
- << - posune odsazení řádku doleva
- == - odsadí tak, aby byl řádek správně formátovaný
Makra
- q
- začátek nahrávání makra - q - ukončení nahrávání makra
- @
- vyvolání makra
Mapování zkratek
- map/noremap - rekurzivní / nerekurzivní mapování
Režimy
- (nore)map - normální, vizuální
- n(nore)map - normální
- v(nore)map - vizuální
- (nore)map! - vkládání, příkazový řádek
- i(nore)map - vkládání
- c(nore)map - příkazový řádek
Okna
- Ctrl+w w - přepne do dalšího okna
- Ctrl+w r - prohodí pořadí oken
- Ctrl+w v - rozdělí okno vertikálně
- Ctrl+w s - rozdělí okno horizontálně
- Ctrl+w q - zavře okno
- Ctrl+w + - zvětší výšku okna
- Ctrl+w - - zmenší výšku okna
- Ctrl+w > - zvětší šířku okna
- Ctrl+w < - zmenší šířku okna
- :sp / :split - rozdělí okna horizontálně
- :vsp / :vsplit - rozdělí okna vertikálně
Pohyby
- 0/Home - začátek řádku
- ^/_ - první neprázdný znak řádku
- $/End - konec řádku
- 10| - desátý sloupec
- f
- následující výskyt znaku - F
- předchozí výskyt znaku - t
- před následující výskyt znaku - T
- za předchozí výskyt znaku - ; - opakuje poslední hledání na řádku
- , - opakuje poslední hledání na řádku v opačném směru
- * - nalezení dalšího slova pod kuzorem
- g* - nalezení slova pod kurzorem i když je součástí jiného slova
- # - nalezení předchozího slova pod kurzorem
- g] - skočí na definici
- 100go - skočí na stý znak v souboru
- ’. - přesune se na poslední editovaný řádek
- `. - přesune se na poslední editovanou pozici
- ’’ - vrátí poslední skok (kurzor na začátku přechozího řádku)
- `` - vrátí poslední skok (kurzor na poslední pozici)
- ma - nastaví značku a na aktuální pozici (můžou být
*a*-*z*lokální a*A*-*Z*globální) - ‘a - přesune se na řádek se značkou a
- `a - přesune se na pozici značky a
- w, W - na začátek následujícího slova
- e, E - na konec tohoto slova
- b, B - na nejbližší předchozí začátek slova
u velkých písmen považuje vim za slovo posloupnost nebílých znaků a u malých nezapočítává třeba . nebo ,
- ) - začátek nejbližší následující věty
- ( - nejbližší předchozí začátek věty
- } - za nejbližší následující konec odstavce
- { - před nejbližší předcházející konec odstavce
- % - odpovídající párová závorka
- 5H - pátý řádek od vrchu okna
- M - střed okna
- 5L - pátý řádek od spodku okna
- Ctrl + ^ - předchozí editovaný buffer
- zt - odskroluje okno tak, aby byl kurzor nahoře
- zz - odskroluje okno tak, aby byl kurzor uprostřed
- zb - odskroluje okno tak, aby byl kurzor dole
Režim pro výběr
- v - výběr od aktuální pozice
- V - výběr celých řádků od aktuálního
Výběr xml tagů
- at - vyběr až po párový tag včetně tagu
- it - vyběr až po párový tag bez tagu (pouze vnitřek)
- o/O - skok na párový tag
Skládání
- zo - rozbalí blok
- zc - sbalí blok
- za - přepne sbalený/rozbalený blok
VimDiff
- ]c - skočí na následující změnu
- [c - skočí na předchozí změnu
- do - použije změnu z druhého okna do aktuálního
- dp - použije změnu z aktuálního okna do druhého
Vkládací režim
Přepnutí
- a - za znak označený kurzorem (append)
- i - před znak označený kurzorem (insert)
- A - za poslední znak na aktuálním řádku
- I - před první neprázdný znak na aktuálním řádku
- o - nový řádek pod aktuálním řádkem
- O - nový řádek nad aktuálním řádkem
Zkratky
- Ctrl + p - doplňuje z předchozích slov
- Ctrl + n - doplňuje z následujících slov
- Ctrl + x Ctr + f - doplňuje cestu
- Ctrl + x Ctr + l - doplňuje celé řádky
- Ctrl + t - posouvá odsazení řádku doprava
- Ctrl + d - posouvá odsazení řádku doleva
Zobrazení informací
- Ctrl + g - zobrazí název souboru, počet řádků a pozici v procentech
- g Ctrl + g - informace o znacích, slovech, řádcích sloupcích
- [I - zobrazí řádky, které obsahují slovo pod kurzorem
Pluginy
Jedi-vim
Jedi-vim umožňuje nejen doplňovat v Python kódu.
Zkratky
- Ctrl + mezerník - doplňování kódu
- \ + g - najde přiřazení
- \ + d - jde na definici
- K - ukáže Pydoc
- \ + r - přejmenuje
- \ + n - ukáže požití
Ropevim
umožňuje požítí knihovny Rope ve Vimu
Klávesové zkratky
- M-/ - doplňování kódu
- M-? - doplňování bez nabídky (první možnost)
- C-c g - jde na definici
- C-c d - ukáže dokumentaci
- C-c f - najde použití
- C-c r r - přejmenuje slovo pod kurzorem
Mapování
použije Ctrl-Space pro doplňování s Ropevim
imap <C-Space> <M-/>
Tag List
zobrazuje okno s třídami, metodami a funkcemi
Příkazy ex
perldo s/<regex>/<nahradit>/- pro nahrazení se použijí perlovské regulární výrazy
:buffers/:ls/:files- zobrazí otevřené soubory:b/:bu/:buf/:buffer- s číslem nebo jménem přepne do bufferu:e <soubor>- otevře soubor v novém bufferu:sp <soubor>- otevře soubor v novém bufferu a rozdělí okno
:! <příkaz>- spustí příkaz:r <soubor>- vloží obsah souboru:r! <příkaz>- vloží výstup příkazu
:reg- vypíše aktuální obsah registrů
Editace řádků
:%g/<vzorek>/d- smaže všechny řádky, které korespondují se vzorkem:g/^$/d- smaže prázdné řádky
:%g/^/m0- všechny řádky v souboru budou v opačném pořadí:%j- spojí všechny řádky do jednoho (oddělí mezerou):%j!- spojí všechny řádky do jednoho:%s/<co>/<čím>/<volby>- nahrazování:%s/background/&-color/g- nahradí všechny background za background-color:%v/<vzorek>/d- smaže všechny řádky, které nekorespondují se vzorkem:sort- seřadí řádky:sort u- seřadí řádky a smaže duplicitní
put
:put =range(11,15)- za aktuální řádek vloží čísla 11-15 (každé na vlastní řádek)
set:
set: fileformat- ukáže typ konce řádků použitých v souboru hodnoty (dos, unix, mac)set: fileencoding- ukáže kodování, v jakém je soubor zobrazený
Speciální příklady
Přeformátuje všechny php soubory
find . -name '*.php' -printf "echo -e \"G=gg\n:wq\n\" | vim %p\n" | sh