2012-03-31 10 views
9

hovimrc di swap punto e virgola e due punti ma lasciare invariata colon in altri <map> s

noremap ; : 
noremap : ; 

Imposta come un tentativo di farmi usare la combinazione di tasti più breve per ottenere i due punti. Tuttavia questo rende le mie altre mappature non funzionanti poiché ora inserisce un punto e virgola al posto dei due punti.

map ,c :cd ~/code<CR> ad esempio diventa map ,c ;cd ~/code<CR> quindi non funziona. Come posso risolvere questo? Grazie!

+0

Hai bisogno di rimappare i due punti? Io uso solo 'nnoremap; : 'e questo è tutto. – alberge

+0

@alberge: utilizzando solo il primo di questi mapping, si ombreggia il comando ';' Normal mode. Quando viene aggiunta la seconda mappatura, i significati di ';' e ':' vengono scambiati. –

+3

Wow, come mai non ho mai pensato di usare questa mappatura? Vado ad aggiungerlo al mio .vimrc adesso. – weronika

risposta

8

I comandi della famiglia :map consentono di utilizzare i mapping nella definizione di una nuova mappatura (incluso se stessa). Rende possibili ricorsive e le mappature nidificate , quando necessario. Questo è il motivo per cui la mappatura del colon viene applicato ad altre mappature aventi il ​​carattere due punti, come

:map ,c :cd ~/code<cr> 

Per evitare questo comportamento, utilizzare il :noremap famiglia di comandi, che non non interpretare alcun mapping nel lato destro di una definizione di mappatura (vedi :help :no):

:noremap ,c :cd ~/code<cr> 

Nella maggior parte dei casi l'interferenza con altre mappature è un indesiderabile effetto collaterale . Come regola generale, raccomando di adottare la seguente convenzione quando si introduce una mappatura: utilizzare le funzioni :noremap a meno che non vi sia una chiara ragione per non farlo.

Problemi correlati