2009-12-05 20 views
5

¿Hay alguna forma de asignar una secuencia de pulsaciones de teclas a una línea de comando (un comando introducido después de : en el modo Ex) en vim?Asignación de una secuencia de teclas a comandos de línea de comandos

+1

Sure! ¿Puedes dar un ejemplo de lo que tratas de hacer, o simplemente preguntas en general? – Rook

+0

En general, muchas veces me doy cuenta de que estoy haciendo lo mismo repetidamente pero, por otro lado, no quiero crear una clave vinculante (no quiero otro Emacs donde estoy usando teclas modificadoras para todos mis comandos) – Opt

Respuesta

7

Sí, y es intuitivamente llama: mapa

Ejemplo:

:map foo :echo "bar"<CR> 

No cuando está en modo de inserción se presionan las teclas foo vim responderá con "barra". Tipo :help :map en vim para obtener más información. Puede colocar las asignaciones que desea cargar de forma predeterminada en su archivo .vimrc.

Puede asignar independientemente las pulsaciones de teclas para diferentes modos, como el modo insertar (: imap) y el modo visual (: vmap). Ver también ayudan vim sobre el tema de reasignación (: noremap)

actualización

Si desea utilizar un alias para el modo de comando (pero esto se puede hacer de modo de inserción también), querrá para usar abreviaturas.

Para definir una abreviatura para el modo de comando, use: ca (que es una abreviatura de: cabbrev). Consulte la ayuda de vim :help :ca y para obtener más información :help :abbreviations.

Tenga en cuenta que, a diferencia del mapa, las abreviaturas no se reemplazan por comandos vim, sino por caracteres literales. Las abreviaturas se activan cuando presiona el espacio o ingresa.

Ejemplos:

" let me type :syn=cpp instead of :set syntax=cpp 
" 
:ca syn set syntax 

" fix my favorite spelling error 
" 
:abbr teh the 

" this does something different than the :map example above 
" 
:iabb foo :echo "bar"<CR> 

" this is ugly, misusing an abbreviation as :map by simulating ESCAPE press 
" 
:iabb hello <ESC>:echo "world"<CR> 
+0

Esto hace que algunas cosas sean más molestas, si por ejemplo quiero ingresar a fo, entonces tengo que pasar un tiempo para que se ejecute esa secuencia de comandos ya que fo es una subcadena de foo. ¿Hay alguna forma de asignar comandos de línea de comandos (comandos ingresados ​​después del indicador:) a una secuencia de pulsaciones de teclas? – Opt

+0

he actualizado mi publicación en respuesta – catchmeifyoutry

Cuestiones relacionadas