2009-11-19 15 views
31

Sé que hay una forma de listar las asignaciones a través de :map (o :imap, :cmap, etc.), pero no encuentro una manera de enumerar las macros que he almacenado en mi archivo vimrc (como en let @a = 'blahblah').¿Hay alguna manera de mostrar una lista de macros similar a mostrar sus asignaciones en Vim?

¿Hay alguna manera de hacer esto sin tener que buscar manualmente dentro de él (a través de :split [myvimrcfile] o de cualquier manera)?

Además, si es posible, ¿hay alguna forma de adjuntar algún tipo de documentación que se muestre con la macro para explicar para qué sirve? Tengo un puñado que uso bastante, pero con 6 semanas de diferencia. Sería bueno incluirlos rápidamente junto con un comentario que me diga qué hace la macro (o incluso solo un nombre, así que me aseguro de usar la correcta).

Gracias

+0

Esto podría ser útil para escribir asignaciones. – AlexMA

Respuesta

56

En vim, las macros se acaba de almacenar en registers. Puede recuperar el contenido de cualquier registro y ejecutarlo como una macro (que es lo que hace el @). Para ver una lista de lo que está en sus registros, use :reg.

+0

Desafortunadamente no muestra la macro en el registro a menos que lo recuerde primero. Me gustaría saber qué es la macro que asigné a ese registro antes de ejecutarlo (para saber cuál ejecutar). –

+0

¿De verdad? Para las cosas que tengo en mi '.vimrc' (como' let @ a = blah'), puedo verlas cuando empiezo por primera vez (gVim 7.2). ¿Tiene una función o script que debe ejecutar para establecer sus macros? – jheddings

+0

También estoy usando gVim7.2. Acabo de tipear mis macros directamente en mi archivo vimrc ... aunque está en c: \ archivos de programa \ vim \ vimfiles \ vimrc_Jay.vim que está cargado en mi archivo _vimrc a través de source $ VIM/vimfiles/vimrc_Jay.vim. ¿Crees que ese es el problema? –

3

se puede ver el contenido de todos los registros con el comando

:reg 

. O una cadena de argumentos como esta

:reg ahx 

le mostrará los contenidos de los registros a, h y x.

De esta forma, al menos, puede ver qué secuencia de comandos se ejecutará y, con suerte, eso será lo suficientemente claro como para que usted sepa uno de otro.

Los registros simplemente contienen texto. Puede pegar la secuencia de comandos como texto o puede copiar texto en un registro y luego ejecutarlo como un comando, dependiendo de cómo acceda al registro.

No he encontrado ninguna forma directa de editar el contenido de un registro, pero puede pegarlo en el archivo, editarlo y luego guardarlo en el mismo registro.

IHTH.

2

Como /u/jheddings escribió las macros se almacenan como registros y lo que cuenta es la asignación del código para el registro (por lo general hecho en los archivos vimrc con let @a=blahblah Para facilitar el camino para mostrar las macros que definió en su archivo vimrc (en mi caso se encuentra en la ruta ~/.vimrc), puede utilizar esta función vim:

function! ShowMacros() 10new exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc' call cursor(1,1) endfunction

lo que hace:

10new - abrir una nueva ventana vim con diez líneas de talla

exe ​​... - ejecuta un comando y coloca en la ventana

llama ...- Ir al primer línea de la primera columna de

Puede ejecutar esta función inclinando en el modo normal :call ShowMacros

Se puede crear adicionalmente una asignación de teclas o un comando para fijar la forma de llamar a la función:

:cnoremap sm call ShowMacros()<CR> command! sm call ShowMacros()

This es la publicación original donde escribí la función similar a la anterior.

Cuestiones relacionadas