2010-04-09 16 views

risposta

10

ho trovato un modo per farlo. Vedi How to disable a built-in command in vim. Da ciò, possiamo vedere che possiamo usare cabbrev per cambiare ciò che fa un comando. Per le mie esigenze, cabbrev e tabe è perfetto.

Ma possiamo generalizzare questa soluzione per rendere i comandi che iniziano con caratteri minuscoli accessibili agli utenti per quelli definiti dall'utente: utilizzare cabbrev per (ri) definire un comando incorporato come definito dall'utente. Pertanto, siamo in grado di ridefinire i comandi incorporati e quelli definiti dall'utente.

Ecco un esempio, che equivale a mia soluzione di cui sopra al mio problema:

:command -nargs=+ E :tabe "<args>" 
:cabbrev e E 

Questo è tutto.

+0

Si interrompe se si desidera digitare: 'echo e f', che diventerebbe invece 'echo E f'. La mia risposta tenta di superare questo. –

1

Come ho capito, non è possibile. I comandi definiti dall'utente devono avere una prima lettera maiuscola.

:help :command 

per ulteriori informazioni

3

La migliore soluzione senza un plugin che ho visto finora è:

cnoreabbrev <expr> e getcmdtype() == ":" && getcmdline() == 'e' ? 'tabe' : 'e' 

se si utilizza un semplice:

cnoreabbrev e E 

come suggerito da @Yktula romperebbe il vostro comando se si vuole fare:

echo e f 

che diventerebbe:

echo E f 

invece.


Come spiegato da @pydave nei commenti, il cmdalias plugin aggiunge un'interfaccia più semplice per fare gli alias sicure semplicemente come:

:Alias e tabe 

Al momento della stesura del plugin anche utilizza la tecnica a getcmdtype() == ":" implementare la sua funzionalità.

+0

Puoi usare [cmdalias] (http://www.vim.org/scripts/script.php?script_id=746) per semplificarlo in ': Alias ​​e tabe' e farà la magia getcmdline per te. – idbrii