V tomto komplexním průvodci vysvětlím, jak namapovat klíče ve Vimu pro automatizaci operací. Od vytvoření základní mapy klíčů po pokročilé mapování klíčů spolu s procesy jejich trvalého a odstranění.
- Syntax
- Vim Speciální argumenty
- Vytvoření základní mapy kláves
- Výpis Keymaps
- Zajištění trvalých map kláves
- Vyhýbání se rekurzi
- Vytváření map kláves specifických pro režim
- Jak mapovat události myši
- Jak mapovat pomocí Leader Key ve Vimu
- Jak mapovat funkci Vimscript
- Jak mapovat externí příkazy ve Vimu
- Jak odstranit keymapu ve Vimu
- Cheat pro mapování klíčů Vim
- Závěr
Syntax
K mapování klíče ve Vimu se používá následující syntaxe:
Ve výše uvedené syntaxi:
|
nmap, imap, vmap, xmap, cmap nebo omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*Ve výše uvedené syntaxi je sekce Vim Speciální argumentyVim Special Arguments jsou tagy používané k poskytování dalších funkcí mapám kláves. Tyto argumenty se objeví za příkazem :map a před {rhs} a {lhs}. Chcete-li například vytvořit specifickou vyrovnávací paměť mapy, použijte speciální argument následujícím způsobem: :mapa < vyrovnávací paměť > < C-a > ggVG
Zápisy speciálních kláves Vim jsou uvedeny na následujícím obrázku.
Pokud například chcete při mapování kláves použít mezerník, použije se zápis Vytvoření základní mapy kláves ve VimuPojďme pochopit mapování klíčů Vim na základním příkladu. Chci namapovat příkaz select all lines ( ggVG ) do ctrl+a klíče. Pro mapování kláves ctrl+a spustím ve Vimu následující příkaz. :mapa < C-a > ggVG Tady, Podobně, chcete-li mapovat číslo řádku, přepínejte funkci s F1 použití klíče: :mapa < F1 > :nastavit číslo !Nyní, když stisknete klávesu F1, číslo řádku se povolí a dalším stisknutím jej deaktivujete. Všimněte si, že tato metoda mapuje pouze klíče v aktuální vyrovnávací paměti a bude odstraněna při zavření vyrovnávací paměti. Výpis KeymapsChcete-li zobrazit všechna klíčová mapování normálního, vizuálního a režimu čekajícího na obsluhu, použijte příkaz :map. :mapaChcete-li zobrazit seznam mapování klíčů vložit a příkazový řádek režimů, použijte :map! Příkaz. :mapa !Chcete-li zobrazit mapování kláves konkrétního režimu, stačí zadat počáteční písmeno režimu před klíčové slovo mapa.
Navíc pro výpis všech map včetně pluginu mapy s cestami použijte :podrobná mapa příkaz. :podrobná mapa Pro konkrétní klíč jednoduše uveďte klíč v příkazu ( :podrobná mapa Zajištění trvalých map klávesKlávesové mapy uvedené ve výše uvedené části mapují klíče pouze v aktuálním bufferu. Aby byla mapování klíčů Vim trvalá, musí být mapy umístěny do souboru vimrc.
Všimněte si, že při umísťování keymapy do vimrc soubor, nepřidávejte dvojtečku (:) před mapa příkaz. Po umístění mapy kláves do vimrc soubor, uložte a ukončete jej pomocí příkazu :wq nebo pomocí kláves shift+zz. Klávesové mapy umístěné v vimrc soubor bude globální a lze jej použít ve všech relacích Vimu. Některé klávesové mapy však mohou být dočasně zakázány, pokud ovlivňují práci v aktuální relaci, viz část Jak odebrat klávesovou mapu ve Vimu níže. The vimrc je soubor nastavení Vimu, který obsahuje různé příkazy a nastavení. Je přítomen v /usr/share/vim/ adresář na macOS a /etc/vim na Linuxu. Je důležité poznamenat, že vimrc soubory ve zmíněných adresářích jsou systémové soubory. Tyto soubory můžete také upravovat pro mapování klíčů, ale doporučil bych vytvořit specifické pro uživatele vimrc soubor v domovském adresáři. Vyhýbání se rekurziNež se pohneme vpřed, je důležité dozvědět se o rekurzi v mapování klíčů Vim. Jeho nevýhody a jak tomu předejít. Lze to pochopit pomocí příkladu. :mapa dd 3jddVe výše uvedeném příkladu jsem zmapoval dd pro posun o 3 řádky dolů a smazání řádku pod kurzorem. Nyní, když stisknu tlačítko dd , pokusí se spustit mapu 3jdd . Vim bude interpretovat dd příkaz jako mapu a spusťte mapu opakovaně, jak je znázorněno na následujícím obrázku.
Poznámka : Rekurze může zmrazit editor Vim. Chcete-li jej rozmrazit, stiskněte ctrl+c klíče. Chcete-li se vyhnout rekurzi, vyměňte mapa klíčové slovo s noremap , kde ‚ nore “ znamená nerekurzivní . nahradím mapa klíčové slovo s noremap opravit rekurzi ve výše uvedené mapě kláves. :noremap dd 3jddDoporučuji používat noremap namísto mapa aby nedošlo k náhodnému vytvoření rekurzivního mapování. Vytváření map kláves specifických pro režimVim udělal mapování kláves tak univerzální, že i keymapu konkrétního režimu lze vytvořit docela snadno. Pokud jste například vytvořili mapu kláves pro režim vkládání pomocí a F1 klíč, pak můžete mapovat totéž F1 zadejte jiný režim pro zcela novou operaci. V následujícím příkladu jsem zmapoval F1 klávesou pro smazání 3 řádků v normální režimu a vytrhněte 3 řádky v vložit režimu. :nmap < F1 > 3dd:imap < F1 > < C-t > První mapa smaže tři řádky v normálním režimu při stisknutí klávesy F1, zatímco druhá mapa přidá jedno odsazení do aktuálního řádku, když je v režimu vkládání pomocí stejné klávesy. Pojďme nyní porozumět mapování v každém režimu. Mapování normálního režimuChcete-li použít mapu v normálním režimu, pouze používejte nmap klíčové slovo. Chcete-li například zkopírovat všechny řádky v souboru pomocí ctrl+c klíče, použiji následující příkaz. :nmap < C-c > ggVGyJak bylo uvedeno výše, je osvědčeným postupem použít k mapování klíče nerekurzivní metodu, proto nahradím nmap s nnoremap klíčové slovo. :noremap < C-c > ggVGyUmístěte jej bez dvojtečky (:) do vimrc soubor, aby se z něj stala trvalá mapa kláves. použiji noremap místo toho mapa v následujícím příkladu. Vložit mapování režimuChcete-li namapovat klíče pro režim vkládání, stačí použít i namísto n . Například v režimu vkládání ctrl+p a ctrl+n klávesy se používají k automatickému doplňování slova na základě zpětné a dopředné shody. Chcete-li zmapovat ctrl+p klávesy s klávesou tab, použiji následující příkaz. :inoremap < Tab > < C-p > Ještě důležitější je, pokud chcete mapovat režim čekání na operátora příkazy v režim vkládání , pak musíte vložit Nyní, když stisknu tlačítko ctrl+x klíče, vytiskne 3ddi příkaz místo jeho provedení.
Abych to napravil, vložím Nyní příkaz provede příkaz keep me v režimu vkládání. Mnoho mini notebooků postrádá Esc klíč, který je důležitý pro ukončení aktuálního režimu. Takže k mapování Esc pro ukončení režimu vkládání lze použít mapování kláves. V následujícím příkladu používám např pro návrat do normálního režimu. :inoremap ex < Esc >Když rychle stisknete např tlačítky režim vkládání opustíte a přejdete do normálního režimu. Mapování vizuálního režimuVizuální režim je velmi významný režim pro výběr textu v editoru Vim. Kromě základního výběru má vizuální režim další různé režimy, jako jsou vizuální čáry a režimy vizuálního bloku. Ve vizuálním režimu tilda (~) slouží k přepínání případu. Chcete-li použít vlnovku (~), musíte stisknout dvě klávesy (Shift+~) . V následujícím příkladu mapuji klíč c vizuální režim pro výběr slova pod kurzorem a změnu velikosti písmen. :vnoremap c iw~Nyní stisknutím v přejděte do vizuálního režimu a stisknutím klávesy c přepněte slovo pod kurzorem, jak je znázorněno na následujícím obrázku GIF.
Mapování režimu příkazového řádkuMnoho základních příkazů Vim funguje pouze v režimu příkazového řádku. Například k uložení souboru :V příkaz se používá podobně k uložení a ukončení :wq je použit příkaz. Všechny operace tabulátorů a rozdělení se také provádějí v režimu příkazového řádku. Chcete-li například vytvořit novou kartu, : podřízený je použit příkaz. Chcete-li rychle vytvořit kartu, ctrl+t klíče stačí. :cnoremap < C-t > předmět < ČR >Nyní stiskněte dvojtečku (:) pro vstup do režimu příkazového řádku a poté ctrl+t otevřít novou kartu; je to mnohem rychlejší než psát celé předmět příkaz a Vrátit se klíč.
Vytváření vlastních příkazů Vim Nyní zadejte příkazový režim a proveďte :Mycmd příkaz. Mapování režimu čekání na operátoraRežim čekání na operátora je režim, ve kterém Vim čeká na pohybový příkaz po stisknutí klávesy operátora. Společné operátory jsou y, d a c. Chcete-li například odstranit aktuální řádek a 3 následující řádky, použijete operátor d with 3j pohyb (d3j). Tyto klávesy nelze stisknout současně, abyste dosáhli požadované operace. Režim se obecně používá k mapování pohybů. Namapujme pohyb, který vybere aktuální čáru a 3 čáry, které budou následovat. :onoremapa < F2 > 3jChcete-li nyní vytrhnout aktuální řádek a 3 řádky za ním, použijte příkaz theF2 klíče, stejným způsobem, d lze také použít operátor. Další důležitou věcí, kterou je třeba mít na paměti, je, pokud přidáte počet k výše uvedenému mapovanému pohybu, řekněme 2 Jak mapovat události myšiPřestože je Vim plně přizpůsobitelný textový editor zaměřený na klávesnici, dostupnost funkcí myši jej ještě vylepšuje. Kromě normálních kláves na klávesnici lze ve Vimu mapovat všechny události myši. Chcete-li například mapovat dvojité kliknutí pravým tlačítkem a dvojitým kliknutím levým, abyste skočili značky dopředu a dozadu, použijte následující mapování. :noremap < 2 -Pravá myš > ] ':noremap < 2 -Levá myš > [ ' Další události myši, které lze mapovat, jsou uvedeny v následující tabulce.
Jak mapovat pomocí Leader Key ve VimuMapování Vim je bez klíče leader neúplné. Vedoucí klíč je výchozí klíč, který lze použít k mapování klíčů, i když jsou namapovány k provádění některých jiných úkolů. Pokud jste například zmapovali d klávesu pro smazání všech řádků, pak můžeme mapovat stejný klíč k odstranění pouze 5 řádků pomocí vedoucího klíče. Pro ty, kteří nejsou obeznámeni, s klíčem vůdce Vim. Je to klávesa, která má předponu s jinou klávesou nebo sadou kláves pro mapování příkazů nebo operací. Výchozí klíč odkazu Vim je zpětné lomítko (\), ale lze jej přizpůsobit. Například, dd příkaz se používá k odstranění řádku pod kurzorem. Pokud chcete zmapovat dd Chcete-li odstranit všechny řádky v souborech, můžete použít klávesu odkazu. :noremap < Vůdce > dd ggVGdNyní, kdykoli stisknete tlačítko \dd všechny řádky v souboru budou odstraněny. Klávesu Vim můžete přiřadit jako ovládací klávesu ve Windows nebo klávesu příkazu v macOS. Jak mapovat funkci VimscriptEditor Vim není omezen na příkazy nebo operace. Kolem Vimu existuje celý programovací jazyk pro vytváření vlastních funkcí nazývaných Vimscript. Můžete snadno vytvořit skript nebo funkci a namapovat je na klíč. Vytvořme například funkci, která umožní nastavení jako číslo řádku, funkčnost myši a šířka textu. funkce Moje nastavení ( )soubor číslo soubor myš =a soubor šířka textu = 80 koncová funkce Umístěte tuto funkci do souboru vimrc. Zmapujme tuto funkci pomocí kláves leader a s. použiji :noremap < Vůdce > s: zavolejte MySettings ( ) < ČR >Nyní, kdykoli stisknete tlačítko \s tlačítky, funkce bude volána a provede se jakákoli funkce uvnitř funkce. Poznámka : První písmeno názvu funkce by mělo být při vytváření vlastní funkce ve Vimu vždy velké. Jak mapovat externí příkazy ve VimuExterní příkazy lze také mapovat ve Vimu. Externí příkazy odkazují na příkazy Linuxu nebo Unixu. Například pokud chcete mapovat externí seřadit příkaz k řazení všech řádků v aktuálním bufferu do F1 použijte následující příkaz. :noremap < F1 > : %! seřadit < ČR >Stejným způsobem, pokud píšete soubor skriptu a děláte jej spustitelným, aniž byste opustili relaci Vim, můžete použít chmod příkaz interně. Chcete-li například, aby byl aktuální soubor spustitelný, můžete příkaz spustit :!chmod +x % ve Vim. Pokud tento úkol provádíte často, jednoduše k němu namapujte klíč. :noremap < F1 > : ! chmod +x %Ve Vimu lze použít jakýkoli externí příkaz s vykřičníkem (!). Jak odstranit keymapu ve VimuChcete-li odstranit mapy kláves ve Vimu, nejprve určete, kde jsou definovány. Jak bylo diskutováno dříve, keymapy mohou být lokální a trvalé. Pokud je mapa klíčů trvalá a je umístěna v souboru vimrc, pak jejich jednoduché odstranění ze souboru zruší mapování klíčů. Pokud je mapování provedeno v aktuální vyrovnávací paměti, lze je odstranit pomocí :odmapovat nebo :nemapovat! příkazy.
Například k odstranění
Chcete-li odstranit všechny mapy v aktuální vyrovnávací paměti, použijte :mapclear příkaz. :mapclearVýše uvedený příkaz vymaže všechny mapy kláves normálního, vizuálního, výběrového nebo čekajícího režimu operátora. Chcete-li vymazat všechny mapy kláves z režimů vkládání a příkazového řádku, použijte: :mapclear ! Všimněte si, že výchozí příkazy Vim nemohou být jasné, ale lze je zakázat pomocí :odmapovat příkaz s dd již nebude v aktuální vyrovnávací paměti funkční. Pomocí této metody lze pro aktuální relaci zakázat jakoukoli mapu kláves. Cheat pro mapování klíčů VimNásledující obrázek poskytuje pro referenci seznam všech příkazů a jejich konkrétních režimů.
ZávěrMapování kláves Vim je praktický způsob, jak automatizovat vaše úkoly, často používané vazby kláves, příkazy a další operace. Je to různorodé téma a v této příručce jsem pokryl všechny hlavní aspekty, které souvisejí s mapováním klíčů ve Vimu. Od obecné syntaxe po vytvoření základní mapy kláves až po mapování pokročilých funkcí Vimscriptu a externích příkazů. Chcete-li se dozvědět více o mapování klíčů Vim, použijte :help mapování klíčů příkaz ve Vim. |