Vim
es mi editor de texto preferido cuando programo y, por lo tanto, siempre me encuentro con un problema particularmente molesto.
Con frecuencia, cuando necesito guardar rápidamente el búfer y continuar con alguna otra tarea miscelánea, hago lo típico
:w
Sin embargo, yo, que parece ser más del 50% del tiempo, siempre logro capitalizar eso :w
. Naturalmente, vim me grita porque W
es un comando no válido
E492: Not an editor command: W
Mi pregunta es cómo puede uno alias dos comandos en vim . En particular, se puede ejemplificar cómo alias W
a w
.
Soy consciente del proceso para asignar teclas a ciertos comandos . Desafortunadamente, eso no es lo que estoy buscando.
:W
, podría asignar una clave para realizar el guardado. Si está acostumbrado a algún programa que guarda con Ctrl-s, existen estas asignaciones de $ VIM / mswin.vim:" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
Respuestas:
Para dejar la finalización intacta, intente usar
, se reemplazará
W
en la línea de comando conw
, pero solo si no está seguido ni precedido por un carácter de palabra,:W<CR>
se reemplazará con:w<CR>
, pero:Write
no lo hará. (Tenga en cuenta que esto afecta a cualquier comando que coincida, incluidos los que no espere, por ejemplo, el comando:saveas W Z
será reemplazado por:saveas w Z
, así que tenga cuidado con esto).Actualizar
Así es como lo escribiría ahora :
Como una función:
Esto comprueba que el tipo de comando es
:
y el comando esW
, por lo que es más seguro que solocnoreabbrev W w
.fuente
:%s/W/foo/g<CR>
:%s/w/foo/g<CR>
:cnoreabbrev <expr> W getcmdtype()==':'&&getcmdline()=~#'^W'?'w':'W'
Con la búsqueda complementaria, descubrí que alguien hizo casi la misma pregunta que yo.
Hará el truco.
Tenga en cuenta que, como señala Richo , el comando del usuario debe comenzar con una letra mayúscula.
fuente
:command AliasName string of command to be aliased
command
argumento, como-nargs
,-complete
etc.:Q!
o:W!
?:command W w
en el.vimrc
archivo.Creo que asignar la
;
clave:
sería una mejor solución y te haría más productivo para escribir otros comandos.fuente
t
of
, generalmente se puede usar;
para ir a la siguiente aparición. Uno puede asignarlo de manera segura de la otra manera, incluso si asignó punto y coma a dos puntos. No habrá un bucle de alias.nnoremap : ;
La mejor solución consiste en escribir una función personalizada para manejar abreviaturas que solo tienen lugar al comienzo de la barra de comandos.
Para esto, agregue lo siguiente a su archivo vimrc o en cualquier otro lugar.
Algunas abreviaturas útiles del material fuente donde encontré estas cosas:
fuente
string()
que hace lo mismo que la tuyaSingle_quote()
.Tal vez le gustaría asignar una de sus teclas de función (F1..F12) a: w? Luego pon esto en tu .vimrc:
(Ctrl-o en modo de inserción cambia temporalmente al modo normal).
fuente
Suponga que desea agregar un alias para el comando tabnew en gvim. simplemente puede escribir el siguiente comando en su archivo .vimrc (si no está en la carpeta de inicio, cree uno)
fuente
:saveas t example
sea reemplazado por:saveas tabnew example
El complemento más seguro y sencillo es cmdalias.vim o mi reciente actualización vim-alias que tiene en cuenta
:sil(ent)(!)
o:redi(r)
,'<,'>
para la selección visual actual,fuente