2009-11-19 15 views
31

So che c'è un modo per elencare le mappature via :map (o :imap, :cmap, ecc), ma non riesco a trovare un modo per elencare le macro ho memorizzate nel mio file vimrc (come in let @a = 'blahblah').Esiste un modo per visualizzare un elenco di macro simile alla visualizzazione dei mapping in Vim?

C'è un modo per farlo senza dover cercare manualmente al suo interno (via :split [myvimrcfile] o in qualsiasi modo)?

Inoltre, se è possibile, esiste un modo per allegare una sorta di documentazione che verrà visualizzata con la macro per spiegare a cosa serve? Ne ho una manciata che uso un bel po ', ma a circa 6 settimane di distanza. Sarebbe bello elencarli rapidamente insieme a un commento che mi dice cosa fa la macro (o anche solo un nome, quindi mi assicuro di usare quello giusto).

Grazie

+0

Questo potrebbe essere utile per la scrittura di mapping. – AlexMA

risposta

56

In vim, le macro sono solo memorizzate in registers. È possibile richiamare il contenuto di qualsiasi registro ed eseguirlo come una macro (che è ciò che fa lo @). Per vedere un elenco di ciò che è nei tuoi registri, usa :reg.

+0

Sfortunatamente non elenca la macro nel registro a meno che non la ricordi prima. Vorrei sapere qual è la macro che ho mappato a quel registro prima di eseguirlo (quindi so quale deve essere eseguito). –

+0

Davvero? Per le cose che ho nel mio '.vimrc' (come' let @ a = blah'), sono in grado di vederle al primo avvio (gVim 7.2). Hai una funzione o uno script che devi eseguire per impostare i tuoi macro? – jheddings

+0

Sto anche usando gVim7.2. Ho appena digitato i miei macro direttamente nel mio file vimrc ... anche se è in c: \ program files \ vim \ vimfiles \ vimrc_Jay.vim che viene caricato nel mio file _vimrc tramite source $ VIM/vimfiles/vimrc_Jay.vim. Pensi che sia questo il problema? –

3

si può vedere il contenuto di tutti i registri con il comando

:reg 

. O una stringa argomento come questo

:reg ahx 

vi mostrerà il contenuto dei registri a, h, e x.

In questo modo è possibile almeno vedere quale sequenza di comandi verrà eseguita e, si spera, ciò sarà abbastanza chiaro per poterne distinguere l'uno dall'altro.

I registri contengono semplicemente testo. È possibile incollare la sequenza di comandi come testo oppure copiare un testo in un registro e quindi eseguirlo come un comando, a seconda di come si accede al registro.

non ho trovato alcun modo diretto per modificare il contenuto di un registro, ma è possibile incollarlo nel file, modificarlo e quindi salvarlo di nuovo allo stesso registro.

IHTH.

2

Come /u/jheddings ha scritto le macro sono memorizzate come registri e quello che conta è l'assegnazione del codice al registro (di solito fatto nel file vimrc con let @a=blahblah Per facilitare il modo per visualizzare le macro definite nel file vimrc (nel mio caso è nel/path ~ .vimrc) è possibile utilizzare questa funzione vim:

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

Cosa fa:

10New - aprire una nuova finestra di Vim con dieci linee size

exe ​​... - eseguire un comando e mettere nella finestra

chiamata ...- Vai alla prima colonna prima linea

È possibile eseguire questa funzione dal ribaltamento in modalità normale :call ShowMacros

Si potrebbe inoltre creare una mappatura dei tasti o di un comando per fissare il modo di chiamare la funzione:

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

This è il post originale in cui ho scritto la funzione simile al precedente.

Problemi correlati