Ricerca…


Registrare una macro

Un modo per creare una macro è registrarlo .

Iniziare a registrare una macro e salvarla in un registro (in questo esempio, useremo a , ma può essere qualsiasi registro in cui normalmente si può copiare il testo):

qa

Quindi esegui i comandi che desideri registrare nella macro (qui, circonderemo il contenuto di una riga con i tag <li> ):

I<li><ESC>A</li>

Quando abbiamo finito con i comandi che vogliamo registrare nella macro, interrompiamo la registrazione:

q

Ora, ogni volta che vogliamo eseguire la sequenza registrata di comandi memorizzati in a , utilizzare:

@a

e vim ripeterà la sequenza registrata.

La prossima volta che vorresti ripetere l'ultima macro che hai usato puoi raddoppiare @ :

@@

E come bonus extra è bene ricordare che se metti un numero prima di un comando lo ripeterà più volte. Quindi, ripeti la macro salvata nel registro a 20 volte con:

20@a

Modifica di una macro vim

A volte si commette un errore con una lunga macro, ma si preferisce modificarlo piuttosto che riscriverlo interamente. Puoi farlo usando il seguente processo:

  1. Metti la macro su una riga vuota con "<register>p .

    Se la tua macro è salvata nel registro a , il comando è "ap .

  2. Modifica la macro secondo necessità.

  3. Sposta la macro nel registro corretto spostando il cursore all'inizio della riga e utilizzando "<register>y$ .

    È possibile riutilizzare il registro originale o utilizzarne un altro. Se si desidera utilizzare il registro b , il comando è "by$ . O utilizzando "<register>d$ (elimina la linea inutilizzata)

Macro ricorsive

I macro Vim possono anche essere ricorsivi. Questo è utile quando devi agire su ogni riga (o altro oggetto di testo) fino alla fine del file.

Per registrare una macro ricorsiva, iniziare con un registro vuoto. (Un registro può essere svuotato usando q<register>q .)

Scegli un punto di partenza coerente su ogni linea per iniziare e finire.

Prima di terminare la registrazione, richiamare la macro stessa come ultimo comando. (Questo è il motivo per cui il registro deve essere vuoto: quindi non farà nulla, poiché la macro non esiste ancora).

Esempio, dato il testo:

line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???

In modalità normale, con il cursore sulla prima riga e un registro vuoto a , è possibile registrare questa macro:

qaI"<Esc>A"<Esc>j@aq

Quindi con una singola invocazione di @a , tutte le righe del file si troverebbero ora tra virgolette doppie.

Cos'è una macro?

Una macro è una serie di sequenze di tasti che devono essere "riprodotte" da Vim senza alcun ritardo. Le macro possono essere memorizzate in registri o variabili, associate a chiavi o eseguite sulla riga di comando.

Ecco una semplice macro che mette in maiuscolo la terza word su una riga:

0wwgUiw

Quella macro potrebbe essere registrata nel registro q :

qq         start recording into register q
0wwgUiw    
q          stop recording

o salvato direttamente nel registro q :

:let @q = '0wwgUiw'

da riprodurre con:

@q

Ma potrebbe anche essere digitato direttamente nella riga di comando:

:normal 0wwgUiw

per la riproduzione istantanea tramite il comando :normal .

O inserire una variabile:

:let myvar = '0wwgUiw'

da riprodurre con:

@=myvar

O salvato come una mappatura:

nnoremap <key> 0wwgUiw

da riprodurre premendo <key> .

Se si desidera memorizzare una macro per riutilizzarla in un secondo momento, è possibile digitare in modalità di inserimento:

<C-r>q

Questo inserisce la macro nel registro q (in questo esempio: 0wwgUiw ). Puoi usare questa uscita, ad es. Per definire la macro nel tuo vimrc :

let @q='0wwgUiw'

In questo modo il registro q viene inizializzato con questa macro ogni volta che si avvia vim.

Registra e riproduci azione (macro)

con il comando q potremmo semplificare un sacco di noioso lavoro in vim.

esempio 1. genera una sequenza di array (da 1 a 20).

PASSAGGIO 1. premere i per accedere alla modalità di inserimento, immettere 1

1

PASSAGGIO 2. Registrare la seguente azione: "aggiungere l'ultimo numero alla riga successiva e incrementare il numero"

  1. digitare esc per uscire dalla modalità di input
  2. digitare qa per accedere alla modalità di registrazione, utilizzando il buffer a
  3. digitare yy e p per copiare la riga corrente e incollarla come riga successiva
  4. digita ctrl + a per incrementare il numero
  5. digitare di nuovo q per terminare la registrazione
1
2

PASSAGGIO 3. Riproduci l' azione 18 volte.

digitare 18@a per ripetere l'azione 3 e l'azione 4 nel passaggio 2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow