Come mappare le chiavi in ​​Vim

Come Mappare Le Chiavi In Vim



In Vim, la mappatura dei tasti è un processo di assegnazione di un set di tasti o comandi a un tasto specifico per eseguire un compito particolare. Ad esempio, per selezionare tutte le righe del file si utilizza il comando ggVG comando e devi premere quattro tasti per farlo. Che ne dici di farlo con un solo tasto? È qui che la mappatura dei tasti Vim torna utile. La mappatura dei tasti è un modo per automatizzare molte attività eseguite di frequente in Vim. E devi averne sentito parlare; se stai facendo qualcosa più di due volte, automatizzalo!

In questa guida completa ti spiegherò come mappare i tasti in Vim per automatizzare le operazioni. Dalla creazione di una mappatura dei tasti di base alla mappatura dei tasti avanzata, insieme ai processi per renderli permanenti e rimuoverli.

Sintassi

Per mappare la chiave in Vim, viene utilizzata la seguente sintassi:







mappa



Nella sintassi sopra:



mappa nmap, imap, vmap, xmap, cmap o omap
* , ,

*Nella sintassi precedente, la sezione è facoltativa.

Argomenti speciali di Vim

Gli argomenti speciali di Vim sono tag utilizzati per fornire funzionalità aggiuntive alle mappe dei tasti. Questi argomenti appaiono dopo il comando :map e prima di {rhs} e {lhs}.



Ad esempio, per rendere una mappa specifica per il buffer, utilizzare l'argomento speciale nel modo seguente:

:carta geografica < respingente > < Circa > ggVG
Per sopprimere i messaggi con eco da una mappa dei tasti
Per rendere la mappa specifica per il buffer (unica per il buffer corrente)
Per indicare che la mappa fa parte di uno script o di un plugin
*Viene utilizzato per definire i tasti speciali per la mappatura utilizzando la notazione <> (tasti funzione, controllo, spostamento e altri tasti non alfabetici)
Indica che il lato sinistro della mappatura è un'espressione e deve essere valutato per ottenere il lato destro
Per rendere la mappa unica tra le mappe locali e globali
Per saltare l'attesa del carattere di comando successivo nella mappa

Le notazioni chiave speciali di Vim sono menzionate nell'immagine seguente.

Ad esempio, se si desidera utilizzare la chiave spaziatrice nella mappatura dei tasti, verrà utilizzata la notazione .

Creazione di una mappa dei tasti di base in Vim

Comprendiamo la mappatura dei tasti Vim con un esempio di base. Voglio mappare il comando seleziona tutte le righe ( ggVG ) A ctrl+a chiavi. Per mappare i tasti ctrl+a, eseguirò il seguente comando in Vim.

:carta geografica < Circa > ggVG

Qui, significa il Ctrl E UN chiavi, mentre ggVG è un comando per selezionare tutte le righe nel file. IL :carta geografica la parola chiave è per la mappatura in modalità normale per impostazione predefinita, tuttavia, il file :nmappa può anche essere utilizzato esplicitamente per il normale modalità.

Allo stesso modo, per mappare il numero di riga, attivare/disattivare la funzionalità con F1 uso chiave:

:carta geografica < F1 > :imposta il numero !

Ora, quando si preme il tasto F1, il numero di linea verrà abilitato e premendolo nuovamente lo si disabiliterà.

Tieni presente che questo metodo mapperà solo le chiavi nel buffer corrente e verrà rimosso alla chiusura del buffer.

Elencare le mappe dei tasti

Per elencare tutte le mappature dei tasti delle modalità normale, visiva e in attesa dell'operatore, utilizzare il comando :map.

:carta geografica

Per elencare la mappatura dei tasti di inserire E riga di comando modalità, utilizzare :map! Comando.

:carta geografica !

Per elencare la mappatura dei tasti di una modalità specifica, basta digitare la lettera iniziale della modalità prima della parola chiave map.

:nmappa Per visualizzare le mappe della modalità normale
:imap Per visualizzare le mappe della modalità inserimento
:vmap Per visualizzare le mappe della modalità visiva e selezionare
:smap Per visualizzare le mappe della modalità selezionata
:xmap Per visualizzare le mappe della modalità visiva
:cmap Per visualizzare le mappe della modalità riga di comando
:omap Per visualizzare le mappe della modalità operatore in attesa

Inoltre, per elencare tutte le mappe comprese le mappe plugin con percorsi, utilizzare : mappa dettagliata comando.

: mappa dettagliata

Per una chiave specifica, menziona semplicemente la chiave nel comando ( :mappa dettagliata ).

Rendere permanenti le mappe dei tasti

Le mappe dei tasti menzionate nella sezione precedente mapperanno i tasti solo nel buffer corrente. Per rendere permanenti le mappature dei tasti Vim, le mappe devono essere inserite nel file vimrc.

Tieni presente che mentre posizioni la mappa dei tasti nel file vimrc file, non aggiungere i due punti (:) prima del file carta geografica comando.

Dopo aver posizionato la mappa dei tasti nel file vimrc file, salvalo ed esci usando il comando :wq o usando i tasti shift+zz. Le mappe dei tasti posizionate nel file vimrc il file sarà globale e potrà essere utilizzato in tutte le sessioni di Vim. Tuttavia, alcune mappe di tasti possono essere temporaneamente disabilitate se influenzano il lavoro nella sessione corrente, vedere la sezione Come rimuovere una mappa di tasti in Vim di seguito.

IL vimrc è il file di impostazione di Vim che contiene vari comandi e impostazioni. È presente nel /usr/condividi/vim/ directory su macOS e /etc/vim su Linux. È importante notare che il vimrc i file nelle directory menzionate sono file specifici del sistema. Puoi modificare questi file anche per la mappatura dei tasti, ma consiglierei di creare un file specifico per l'utente vimrc file nella directory home.

Evitare la ricorsione

Prima di andare avanti, è importante conoscere la ricorsione nella mappatura dei tasti di Vim. I suoi svantaggi e come prevenirlo. Può essere compreso attraverso l'uso di un esempio.

:carta geografica gg 3jdd

Nell'esempio sopra, ho mappato il file gg tasti per spostarsi verso il basso di 3 righe e cancellare la riga sotto il cursore. Ora, quando premo il tasto gg , proverà ad eseguire la mappa 3jdd . Vim interpreterà il gg comando come mappa ed esegui la mappa ripetutamente, come mostrato nell'immagine seguente.

Nota : La ricorsione può bloccare l'editor Vim. Per sbloccarlo, premere ctrl+c chiavi.

Per evitare la ricorsione, sostituire il file carta geografica parola chiave con noremap , Dove ' no ' significa non ricorsivo . Sostituirò il carta geografica parola chiave con noremap per correggere la ricorsione nella mappa dei tasti sopra.

:noremap gg 3jdd

Consiglierò l'uso noremap invece di carta geografica per evitare di creare accidentalmente una mappatura ricorsiva.

Creazione di mappe di tasti specifiche per la modalità

Vim ha reso la mappatura dei tasti così versatile che anche la mappatura dei tasti di una modalità specifica può essere creata abbastanza facilmente. Ad esempio, se hai creato una mappatura dei tasti per la modalità di inserimento utilizzando un file F1 key, quindi puoi mappare lo stesso F1 tasto in un'altra modalità per un'operazione completamente nuova.

Nell'esempio seguente, ho mappato il file F1 tasto per eliminare 3 righe nel file normale mode e strappa 3 righe nel file inserire modalità.

:nmappa < F1 > 3gg
:imap < F1 > < C-t >

La prima mappa elimina tre righe in modalità normale quando si preme il tasto F1, mentre la seconda mappa aggiunge un rientro nella riga corrente quando si è in modalità di inserimento utilizzando lo stesso tasto. Ora, comprendiamo la mappatura in ciascuna modalità.

Mappatura della modalità normale

Per applicare una mappa in modalità normale, utilizzare solo nmap parola chiave. Ad esempio, per copiare tutte le righe di un file utilizzando ctrl+c keys, userò il seguente comando.

:nmappa < C-c > ggVGy

Come discusso in precedenza, è una buona pratica utilizzare un metodo non ricorsivo per mappare una chiave, pertanto sostituirò il nmap con nnoremap parola chiave.

:nnoremap < C-c > ggVGy

Inseriscilo senza i due punti (:) nel file vimrc file per renderlo una mappa dei tasti permanente.

userò noremap invece del carta geografica nell'esempio seguente.

Inserisci mappatura modalità

Per mappare i tasti per la modalità di inserimento, basta usare io invece di N . Ad esempio, in modalità di inserimento, ctrl+p E ctrl+n i tasti vengono utilizzati per completare automaticamente la parola in base rispettivamente alla corrispondenza all'indietro e in avanti. Per mappare il ctrl+p tasti con il tasto tab, userò il seguente comando.

:inoremap < Tab > < C-p >

Ancora più importante, se vuoi mappare modalità in attesa dell'operatore comandi nel modalità di inserimento , quindi è necessario inserire il file sul lato destro per uscire dalla modalità di inserimento ed eseguire tali comandi. Ad esempio, nella seguente mappa dei tasti, voglio eliminare 3 righe utilizzando il comando ctrl+x tasti e accedere nuovamente alla modalità di inserimento.

:inoremap < Cx > 3ddi

Ora, quando premo il tasto ctrl+x tasti, stamperà il file 3ddi comando invece di eseguirlo.

Per risolverlo, inserirò il file prima di 3ddi comando.

:inoremap < Cx > < Esc > 3ddi

Ora il comando eseguirà il mantenimento della modalità di inserimento.

Molti mini laptop non hanno il Esc chiave, che è importante per uscire dalla modalità corrente. Quindi, per mappare il Esc tasto per uscire dalla modalità di inserimento, è possibile utilizzare la mappatura dei tasti. Nell'esempio seguente, sto usando ex tasti per uscire dalla modalità normale.

:inoremap es < Esc >

Quando si preme rapidamente il ex si uscirà dalla modalità di inserimento, entrando così nella modalità normale.

Mappatura della modalità visiva

La modalità visiva è una modalità molto significativa per selezionare il testo nell'editor Vim. Oltre alla selezione di base, la modalità visiva ha altre modalità diverse come la modalità linea visiva e la modalità blocco visivo.

Nella modalità visiva, tilde (~) viene utilizzato per alternare il caso. Per utilizzare la tilde (~), è necessario premere i due tasti (maiusc+~) . Nell'esempio seguente, sto mappando la chiave c modalità visiva per selezionare una parola sotto il cursore e cambiarne le maiuscole e minuscole.

:vnoremap c iw~

Ora premi v per accedere alla modalità visiva e premi il tasto c per alternare la parola sotto il cursore come mostrato nella seguente GIF.

Mappatura della modalità della riga di comando

Molti comandi essenziali di Vim funzionano solo in modalità riga di comando. Ad esempio, per salvare il file :In il comando viene utilizzato, in modo simile, per salvare e uscire :wq viene utilizzato il comando. Tutte le schede e le operazioni di divisione vengono eseguite anche in modalità riga di comando. Ad esempio, per creare una nuova scheda, il file : subordinato viene utilizzato il comando. Bene, per creare rapidamente una scheda, ctrl+t bastano le chiavi

:cnoremap < C-t > soggetto < CR >

Ora premi i due punti (:) per accedere alla modalità della riga di comando, quindi ctrl+t per aprire una nuova scheda; è molto più veloce che digitare l'intero testo soggetto comando e Ritorno chiave.

Creazione di comandi personalizzati Vim
L'accesso alla modalità comando per eseguire una mappa sembra meno utile. Ma puoi creare i tuoi comandi personalizzati in Vim usando il file :comando opzione. Questa funzionalità assomiglia molto alla mappatura dei tasti di Vim. Ad esempio, per creare un comando rapido per impostare il numero di riga e la larghezza del testo su 80, utilizzare il comando seguente.

:comando Mycmd :imposta numero larghezza del testo = 80

Ora, entra nella modalità comando ed esegui il file :Miocmd comando.

Mappatura modalità operatore in sospeso

La modalità operatore in attesa è una modalità in cui Vim attende il comando di movimento dopo aver premuto il tasto operatore. Gli operatori comuni sono y, d e c. Ad esempio, per eliminare la riga corrente e le 3 righe successive, utilizzerai l'operatore d con 3j movimento (d3j). Non è possibile premere questi tasti contemporaneamente per ottenere l'operazione desiderata.

La modalità viene generalmente utilizzata per mappare i movimenti. Mappiamo un movimento che selezionerà la linea corrente e le 3 linee seguite da essa.

:onoremap < F2 > 3j

Ora, per estrarre la riga corrente e le 3 righe seguite da essa, utilizzare il comando l'F2 tasti, allo stesso modo, il D è possibile applicare anche l'operatore.

Un'altra cosa importante da tenere a mente è se aggiungi un conteggio al movimento mappato sopra, diciamo 2 , la mappa lo considererà 23j, non 6j. Per risolvere questo problema, è possibile utilizzare l'espressione registro “=. La mappa sopra può essere modificata come @=’3j’ .

:onoremap < F2 > @ ='3j' < CR >

Come mappare gli eventi del mouse

Sebbene Vim sia un editor di testo incentrato sulla tastiera completamente personalizzabile, la disponibilità della funzionalità del mouse lo rende ancora migliore. Oltre ai normali tasti della tastiera, in Vim è possibile mappare anche tutti gli eventi del mouse. Ad esempio, se desideri mappare il doppio clic destro e il doppio clic sinistro per spostare i segni rispettivamente in avanti e all'indietro, utilizza la seguente mappatura.

:noremap < 2 -Mouse destro > ] `
:noremap < 2 - Mouse sinistro > [ `

Altri eventi del mouse che possono essere mappati sono riportati nella tabella seguente.

<2-MouseSinistro>
<2-Mousedestro>
<3-MouseSinistro>
<3-Mousedestro>
<4-MouseSinistro>
<4-Mousedestro>

Come mappare con la chiave Leader in Vim

La mappatura Vim è incompleta senza la chiave leader. La chiave leader è la chiave predefinita che può essere utilizzata per mappare le chiavi, anche se sono mappate per svolgere altre attività. Ad esempio, se hai mappato il file D tasto per eliminare tutte le righe, quindi possiamo mappare lo stesso tasto per eliminare solo 5 righe utilizzando il tasto leader.

Per chi non ha dimestichezza, con la chiave Vim leader. È una chiave che ha come prefisso un'altra chiave o un insieme di chiavi per la mappatura di comandi o operazioni. La chiave leader predefinita di Vim è una barra rovesciata (\), ma è personalizzabile.

Ad esempio, il gg Il comando viene utilizzato per eliminare la riga sotto il cursore. Se vuoi mappare il gg comando per eliminare tutte le righe nei file, quindi puoi utilizzare la chiave iniziale.

:noremap < Capo > gg ggVGd

Ora, ogni volta che premi il \gg tasto, tutte le righe del file verranno cancellate. Puoi attribuire il tasto leader Vim come tasto control su Windows o tasto comando su macOS.

Come mappare una funzione Vimscript

L'editor Vim non si limita ai comandi o alle operazioni. Esiste un intero linguaggio di programmazione attorno a Vim per creare funzionalità personalizzate chiamate Vimscript. Puoi facilmente creare uno script o una funzione e mapparlo su una chiave. Ad esempio, creiamo una funzione che abiliterà impostazioni come numero di riga, funzionalità del mouse e larghezza del testo.

funzione Le mie impostazioni ( )
impostato numero
impostato topo =a
impostato larghezza del testo = 80
endfunction

Inserisci questa funzione nel file vimrc.

Mappiamo questa funzione con la direttrice e i tasti s. userò

:noremap < Capo > s: chiama MySettings ( ) < CR >

Ora, ogni volta che premi il \S tasti, la funzione verrà chiamata e qualsiasi funzionalità all'interno della funzione verrà eseguita.

Nota : La prima lettera del nome della funzione dovrebbe essere sempre in maiuscolo durante la creazione di una funzione personalizzata in Vim.

Come mappare i comandi esterni in Vim

I comandi esterni possono essere mappati anche in Vim. I comandi esterni si riferiscono ai comandi Linux o Unix. Ad esempio, se vuoi mappare il file external ordinare comando per ordinare tutte le righe nel buffer corrente in F1 chiave, utilizzare il seguente comando.

:noremap < F1 > : %! ordinare < CR >

Allo stesso modo, se state scrivendo un file di script e rendendolo eseguibile senza uscire dalla sessione di Vim, potete utilizzare il comando chmod comandare internamente. Ad esempio, per rendere eseguibile il file corrente, è possibile eseguire il comando :!chmod +x % a Vim. Se esegui spesso questa attività, associa semplicemente una chiave ad essa.

:noremap < F1 > : ! chmod +x %

In Vim qualsiasi comando esterno può essere utilizzato con un segno esclamativo (!).

Come rimuovere una mappa dei tasti in Vim

Per rimuovere le mappe dei tasti in Vim, identifica prima dove è definita. Come discusso in precedenza, le mappe dei tasti possono essere locali nel buffer e permanenti. Se la mappatura dei tasti è permanente e inserita nel file vimrc, la semplice rimozione dal file annullerà la mappatura dei tasti.

Se la mappatura viene eseguita nel buffer corrente, è possibile rimuoverli utilizzando il file :unmap O :annulla mappa! comandi.

  • :unmap per cancellare le mappe dei tasti delle modalità normale, visiva, di selezione o in attesa dell'operatore
  • :annulla mappa! per cancellare le mappe dei tasti delle modalità di inserimento e della riga di comando

Ad esempio, per rimuovere il chiave, utilizzare il :unmap . Inoltre, la rimozione delle chiavi può essere specifica della modalità. Se vuoi rimuovere la mappa della modalità normale, usa il file :nunmap . Altri comandi specifici della modalità per rimuovere una mappa dei tasti sono menzionati di seguito:

:nunmap Per rimuovere le mappe del normale modalità
:iunmap Per rimuovere le mappe del inserire modalità
:vunmap Per rimuovere le mappe del visivo E Selezionare modalità
:mappa solare Per rimuovere le mappe del Selezionare modalità
:xunmap Per rimuovere le mappe del visivo modalità
:cunmap Per rimuovere le mappe del riga di comando modalità
:ounmap Per rimuovere le mappe del operatore in attesa modalità

Per rimuovere tutte le mappe nel buffer corrente, utilizzare il file :mapclear comando.

:mapclear

Il comando precedente cancellerà tutte le mappe dei tasti della modalità normale, visiva, di selezione o in attesa dell'operatore.

Per cancellare tutte le mappe dei tasti delle modalità di inserimento e riga di comando utilizzare:

:mapclear !

Tieni presente che i comandi Vim predefiniti non possono essere cancellati, tuttavia possono essere disabilitati utilizzando il comando :unmap comandare con . Ad esempio, se desideri disabilitare la funzionalità dd che elimina la riga sotto il cursore, utilizza :unmap dd .

:unmap gg < No >

Il dd non sarà più funzionale nel buffer corrente. Utilizzando questo metodo, qualsiasi mappa dei tasti può essere disabilitata per la sessione corrente.

Foglio informativo sulla mappatura delle chiavi Vim

L'immagine seguente fornisce un elenco di tutti i comandi e le relative modalità specifiche come riferimento.

Conclusione

La mappatura dei tasti Vim è un modo pratico per automatizzare le attività, l'associazione dei tasti utilizzati di frequente, i comandi e altre operazioni. È un argomento vario e in questa guida ho trattato tutti gli aspetti principali relativi alla mappatura dei tasti in Vim. Dalla sintassi generale alla creazione di una mappa dei tasti di base fino alla mappatura di funzioni Vimscript avanzate e comandi esterni. Per saperne di più sulla mappatura dei tasti Vim, usa il file :aiuto nella mappatura dei tasti comando in Vim.