2010-04-09 23 views

Respuesta

10

me di cuenta de una manera de hacerlo. Ver How to disable a built-in command in vim. A partir de eso, podemos ver que podemos usar cabbrev para cambiar lo que hace un comando. Para mis necesidades, cabbrev e tabe es perfecto.

Pero podemos generalizar esta solución para hacer que los comandos comiencen con caracteres en minúsculas accesibles para los usuarios para los definidos por el usuario: use cabbrev para (re) definir un comando integrado como uno definido por el usuario. Como tal, podemos redefinir los comandos incorporados, así como los definidos por el usuario.

He aquí un ejemplo, lo que equivale a mi solución a mi problema antes mencionado:

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

eso es todo.

+0

Esto se rompe si quiere escribir: 'echo e f', que se convertiría en 'echo E f' en su lugar. Mi respuesta intenta superar esto. –

1

Según tengo entendido, no se puede. Los comandos definidos por el usuario deben tener una primera letra en mayúscula.

:help :command 

para más información

3

La mejor solución sin un plugin que he visto hasta ahora es:

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

si se utiliza un simple:

cnoreabbrev e E 

según lo sugerido por @Yktula rompería su comando si desea hacerlo:

echo e f 

que se convertiría en:

echo E f 

en su lugar.


Como se explica por @pydave en los comentarios, la cmdalias plugin añade una interfaz más sencilla de hacer los alias de seguros simplemente como:

:Alias e tabe 

En el momento de escribir el plugin también utiliza la técnica de getcmdtype() == ":" implementar su funcionalidad

+0

Puede usar [cmdalias] (http://www.vim.org/scripts/script.php?script_id=746) para simplificarlo a ': Alias ​​e tabe' y hará la magia de getcmdline para usted. – idbrii

Cuestiones relacionadas