Ricerca…


introduzione

L'aggiornamento dei mapping dei tasti Vim consente di risolvere due tipi di problemi: riassegnare i comandi chiave alle lettere che sono più memorizzabili o accessibili e creare comandi chiave per funzioni che non ne contengono. Qui apprenderete i vari modi per [re] mappare i comandi chiave e il contesto a cui si applicano (cioè le modalità vim)

Mappatura di base

panoramica della mappa

Una sequenza di tasti può essere rimappata su un'altra sequenza di tasti usando una delle varianti di map .

Ad esempio, la seguente map tipica uscirà dalla modalità di inserimento quando si preme j k nella sequenza rapida:

:inoremap jk <Esc>

mappa Operatore

Ci sono più varianti di :map per diverse modalità.

comandi Modalità
:map :noremap :unmap Modalità normale, visiva e operatore in attesa
:map! , :noremap! , :unmap! Inserisci e modalità riga di comando
:nmap :nnoremap :nunmap Modalità normale
:imap :inoremap :iunmap Modalità Inserisci e sostituisci
:vmap :vnoremap :vunmap Modalità visiva e selezione
:xmap :xnoremap :xunmap Modalità visiva
:smap :snoremap :sunmap Seleziona la modalità
:cmap :cnoremap :cunmap Modalità della riga di comando
:omap :onoremap :ounmap Operatore in attesa

Di solito, dovresti usare le varianti :noremap ; rende la mappatura immune al remapping e alla ricorsione.

comando di mappa

  • Puoi visualizzare tutti i mapping usando :map (o una delle varianti sopra).
  • Per visualizzare la mappatura corrente per una sequenza di tasti specifica, utilizzare :map <key> dove <key > è una sequenza di tasti
  • I tasti speciali come Esc sono mappati usando la notazione speciale <> , come <Esc> . Per l'elenco completo dei codici chiave, vedi http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
  • :nmapclear : cancella tutte le mappe in modalità normale
  • :nunmap - :nunmap una mappa in modalità normale
  • È possibile configurare il tempo massimo tra le chiavi di una sequenza cambiando i timeout e ttimeout variabili

Esempi

  • imap jk <Esc> : digitando jk in modalità inserimento tornerai alla modalità normale
  • nnoremap tt :tabnew<CR> : digitando tt in modalità normale si aprirà una nuova scheda
  • nnoremap <Cj> <Cw>j : digitando <Cj> in modalità normale ti farà saltare alla finestra in basso ea sinistra
  • vmap <Cc> \cc : digitando <Cc> in modalità visuale verrà eseguito \cc (comando NERDCommenter per commentare la riga). Poiché si basa su una mappatura dei plugin, non puoi usare :vnoremap qui!

a leggere qui

Combinazione di tasti leader della mappa

La chiave leader potrebbe essere utilizzata come un modo per creare una mappatura con un'associazione di chiavi che può essere sostituita dall'utente finale.

Il leader è il tasto \ per impostazione predefinita. Per sovrascriverlo, l'utente finale dovrebbe eseguire :let g:mapleader='somekey(s)' prima di definire la mappatura.

In uno scenario tipico, il mapleader è impostato in .vimrc ei plug-in utilizzano <Leader> nella parte relativa alla combinazione di tasti dei loro mapping per renderli personalizzabili.

Nel plugin, definiremmo i mapping con:

:nnoremap <Leader>a somecomplexaction

Questo mapperebbe l' azione di somecomplexaction alla combinazione di tasti \ + a .

L'azione senza il leader non cambia.

È anche possibile usare <Plug>Mappings per lasciare più spazio per personalizzare i collegamenti dei plugin.

Illustrazione della mappatura di base (scorciatoie utili).

Nella maggior parte degli editor di testo, la scorciatoia standard per salvare il documento corrente è Ctrl + S (o Cmd + S su macOS).

Vim non ha questa caratteristica di default ma può essere mappata per semplificare le cose. L'aggiunta delle seguenti righe nel file .vimrc farà il lavoro.

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

Il comando nnoremap mappa Ctrl + s per :w (scrive il contenuto corrente su file) mentre il comando inoremap esegue il mapping di Ctrl + S per :w comando e ritorna alla modalità di inserimento ( <co> entra nella modalità normale per un comando e ritorna alla modalità di inserimento in seguito, senza alterare la posizione del cursore che altre soluzioni come <esc>:w<cr>a non possono garantire).

Allo stesso modo,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PS: Tuttavia, è necessario notare che Ctrl + S potrebbe non funzionare come previsto durante l'utilizzo di ssh (o PuTTY). La soluzione a questo non è nell'ambito di questo documento, ma può essere trovata qui .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow