Cosa sono i registri Vim

Cosa Sono I Registri Vim



I registri Vim sono blocchi di archiviazione utilizzati per memorizzare testo e operazioni strappati e cancellati. È possibile accedere a questi registri utilizzando i nomi dei tag, che possono essere un numero, una lettera o un simbolo.

Se stai usando Vim, devi usare i registri Vim. Ogni volta che copi/elimini del testo o esegui un'operazione di comando, Vim memorizza queste informazioni nei registri. Quando lo incolli, Vim prende i dati dal registro e li disegna nel buffer. In altre parole, i registri Vim agiscono come appunti per memorizzare il testo e la cronologia dei comandi.

Vim ha un totale di 10 tipi distinti di registri, ognuno dei quali ha uno scopo distinto. In questo tutorial esplorerò i registri Vim, i loro tipi e il loro utilizzo.







Nota : Per questo tutorial, eseguo comandi su macOS. Vim è un'applicazione multipiattaforma, pertanto i comandi menzionati in questa guida si applicheranno a tutte le versioni di Vim indipendentemente dal sistema operativo.



Operatori del registro Vim

I registri in Vim possono essere utilizzati utilizzando operazioni come la copia, l'eliminazione o la modifica. Ogni operazione ha operatori specifici, ad esempio per estrarre il testo viene utilizzato l'operatore y mentre per eliminare il testo viene utilizzato l'operatore d. Di seguito l'elenco degli operatori comunemente impiegati:

aa Strappa (copia) la riga
gg Elimina la riga
cc Cancella la riga e abilita la modalità INSERT
S Cancella il carattere e avvia la modalità INSERT da sostituire
X Cancella il carattere sotto il cursore
q Macro; memorizza l'insieme di comandi in un registro specifico

Per stampare il testo memorizzato, P O P si utilizzano gli operatori:

P Metti (incolla) il testo dopo il cursore
P Posiziona il testo prima del cursore

Anche questi comandi prendono il conteggio. Ad esempio, per copiare 10 righe utilizzare il comando 10aa comando, in modo simile per incollare le 10 copie di una riga strappata utilizzare 22:00 .

Registri di elenco

Per elencare tutti i registri utilizzare il file :Registrati O :reg comando e per elencare il registro specifico utilizzare il comando :reg, dove è il nome del registro (ad esempio, 0-9, a-z).

Allo stesso modo, per elencare il contenuto di più registri, utilizzare il comando :reg “ comando.

Nell'elenco dei registri vedrai tre colonne, Nome, tipo e contenuto . Qui, il tipo indica il tipo di contenuto, non il tipo di registro. Tre tipi del contenuto può essere modificato con i registri.

  • l : In linea
  • C : A livello di carattere
  • B : A blocchi

Ad esempio, se il contenuto viene copiato utilizzando un'operazione a livello di riga (aa) quindi il tipo di contenuto sarà l , se è saggio dal punto di vista del carattere (SÌ) allora il tipo sarà C e se il contenuto viene copiato in blocco (ctrl+v e y) quindi il tipo verrà mostrato come B .

Lavorare con i registri Vim

I registri Vim possono essere utilizzati per memorizzare il contenuto utilizzando gli operatori yank, delete e change. È possibile accedere al contenuto archiviato utilizzando gli operatori put.

Salvataggio del testo in un registro
Quando si preme il aa chiave per copiare una riga, verrà salvata nel registro predefinito chiamato registro senza nome (“”) . Per memorizzare la riga copiata in un registro specifico, il quote (“) seguito dal nome del registro e dall'operatore vengono utilizzati.

'

Ad esempio, per copiare una riga nel nome di un registro Con utilizzo ' zyy . Allo stesso modo, se hai selezionato più righe in modalità VISUAL, utilizza “ zy per memorizzare le righe nel registro z.

Accesso al Registro
Per accedere al registro Vim, il quote (“) Il simbolo viene utilizzato con il nome del registro e p/p operatore.

'pag

Ad esempio, se il nome del registro è z e per accedere al contenuto di questo registro, utilizzare ' zp nella modalità NORMALE. Tuttavia, per eseguire la stessa operazione in modalità INSERT, utilizzare ctrl+rz .

Modalità normale Per memorizzare il contenuto utilizzare quote (“) , registrare il nome (a-z) e l'operatore (y, aa, g, c o cc)
pag Modalità normale Per incollare il contenuto di un registro utilizzare citazione (“) , registrare il nome (a-z) E p/p operatore
ctrl+r Modalità INSERIMENTO Per incollare il contenuto di un registro, utilizzare ctrl+r e registrare il nome (a-z)

Hai l'idea di base dei registri Vim. Ora procederò ad una discussione approfondita di ciascun tipo di registro e del suo utilizzo.

Tipi di registri Vim

In Vim esistono 10 tipi di registri, progettati per scopi specifici.

  1. Registro senza nome (“”)
  2. Registri numerati (0-9)
  3. Piccolo registro di eliminazione (“-)
  4. Registri con nome (a-z o A-Z)
  5. Registri di sola lettura (“:, “., “%)
  6. Registro file alternativo (“#)
  7. Registro delle espressioni (“=)
  8. Selezione e cancellazione dei registri (“*, “+, +~)
  9. Registro dei buchi neri (“_)
  10. Registro ultimo modello di ricerca (“/)

1. Registro senza nome (“”)

È il registro predefinito di Vim per memorizzare il testo strappato o cancellato utilizzando a, aa, g, gg, s, O X comandi.

IL :reg “” Il comando può essere utilizzato per elencare il contenuto memorizzato nel registro senza nome.

Per incollare il contenuto del registro senza nome, utilizzare il comando put (p o P) comando. Per impostazione predefinita, il P Il comando inserisce gli archivi di contenuti nel registro senza nome. In alternativa, i dati memorizzati nel registro senza nome possono anche essere incollati utilizzando il comando “”p.

Nell'esempio seguente, ho copiato una riga utilizzando aa comando e poi inseriscilo 5 volte usando count 5 con p (5p).

2. Registri numerati (0-9)

I registri numerati vengono utilizzati per memorizzare l'ultimo testo strappato o cancellato.

Il registro 0 è diverso dai registri 1-9 . Il registro 0 memorizzerà sempre l'ultimo testo strappato. Ad esempio, se strappo una linea utilizzando aa comando, la riga verrà memorizzata sia nel file senza nome e il 0 registri.

Ora, se elimino una riga utilizzando gg , la riga eliminata verrà archiviata nel registro senza nome e nel registro 1 mentre l'ultimo testo strattonato rimarrà nel registro 0 . Pertanto, è possibile accedere all'ultimo testo strappato in qualsiasi momento tramite il registro 0 .

I registri 1-9 memorizzare l'ultimo testo eliminato. Ad esempio, se elimino una riga utilizzando il file gg comando, il testo cancellato verrà memorizzato sia nel registro senza nome che nel registro 1 . Il registro 1 memorizzerà l'ultimo testo cancellato. Se elimino un'altra riga, il testo precedentemente eliminato verrà spostato nel registro 2 e l'ultimo verrà archiviato nel registro senza nome 1 . In sostanza, i registri numerati (1-9) memorizzare la cronologia del testo eliminato.

Comprendiamo il registro numerato con un esempio. Il seguente file di testo Vim comprende 10 righe; diamo uno strattone al linea 3 utilizzando aa comando. Ora controlliamo lo stato dei registri usando il comando :reg.

La linea strappata è attualmente in senza nome E 0 registri. Ora eliminiamo tutte le righe una per una utilizzando il comando gg comando. Quindi, ultimo riga 10 sarà nel registro senza nome e nel registro 1. Allo stesso tempo, le altre righe cancellate verranno archiviate nei registri 2-9 in ordine crescente.

È possibile accedere a queste linee utilizzando il P comando. Ad esempio, per inserire il testo di Register 9 utilizzo “9 p . Inoltre, se vuoi inserire il valore di Register 95 volte, utilizzare “95p .

3. Registro di cancellazione piccolo (“-)

Questo registro memorizza il testo cancellato se è inferiore a una riga, utilizzando comandi come x, diw, diw, dab, E Ancora . Inoltre, se elimini del testo utilizzando VISIVO modalità di selezione e se è inferiore a una riga verrà memorizzato nel piccolo registro di cancellazione. In Vim, una riga indica una frase completa che termina con un punto.

Ad esempio, nel file seguente, ho selezionato 3 parole collaborazione e sostegno dalla riga numero 9 e li ho cancellati utilizzando il file D operatore. Il piccolo registro di cancellazione verrà utilizzato per salvare questa selezione poiché non è lungo più di una riga. Usa il :reg “- comando per elencare il contenuto del piccolo registro di eliminazione.

4. Registri denominati (a-z o A-Z)

I registri nominati vengono utilizzati per memorizzare testo specifico dell'utente. Quindi, se desideri memorizzare il testo in un registro personalizzato, allora 26 registri da UN A Con può essere utilizzata.

Ad esempio, sto stracciando una riga nel file seguente utilizzando ' zyy , il testo verrà memorizzato nel file Con registrarsi come mostrato nell'immagine seguente.

I registri con nome minuscolo e maiuscolo hanno scopi diversi. Ad esempio, se il testo viene salvato nel registro minuscolo, per sostituire il testo di quel registro verrà utilizzato il registro minuscolo. Tuttavia, per aggiungere il testo al registro minuscolo, verrà utilizzato il registro maiuscolo con lo stesso nome.

Comprendiamolo attraverso un esempio. Dal file seguente, ho memorizzato la riga 8 nel registro X utilizzando ' xyy .

Per aggiungere testo dopo questa riga, selezionerò prima alcune parole in modalità VISUAL. Per aggiungere il testo selezionato, utilizzerò il file “Xy comando.

Per sostituire il testo, utilizzerò nuovamente il ' xyy .

5. Registri di sola lettura (., %, 🙂

Vim ha 3 registri di sola lettura che memorizzano quanto inserito testo, nome file, E ultimo eseguito comando.

. Memorizza l'ultimo testo inserito
% Memorizza il nome del file
: Memorizza l'ultimo comando eseguito

Questi registri, come suggerisce il nome, non possono essere modificati, tuttavia sono facilmente accessibili.

Per inserire l'ultimo testo inserito, utilizzare il file '.P comando.

Per stampare il nome del file, utilizzare il file '%P comando.

Per stampare l'ultimo comando, utilizzare il file ':P.

IL @: Il comando può essere utilizzato per ripetere il comando precedente in Vim. Nell'esempio seguente, ho cancellato le prime 3 righe, premendo @: , vengono cancellate altre 3 righe, ripetendo quindi il comando precedente.

6. Registro buffer alternativo (“#)

Il buffer alternativo è un file che viene aperto nel buffer corrente. Il registro “# memorizza il nome del file bufferizzato nel buffer corrente. Apriamo un altro file nello stesso buffer utilizzando il file :e ~/.vimrc comando, tieni presente che il nome del file corrente è file.txt .

Per chiudere il buffer aperto, utilizzare il file :bcancella O :bwipeout comando. Ora è possibile vedere il nome del file alternativo salvato nel file “# Registrati.

7. Registro delle espressioni (“=)

Il registro delle espressioni è un registro univoco che non viene utilizzato per memorizzare il testo, ma memorizza l'espressione. Ad esempio, se nel file sono presenti alcuni numeri, per sommare questi numeri verranno utilizzate le espressioni Vim.

È possibile accedere a questo registro utilizzando “= nella modalità NORMALE e ctrl+r = nella modalità INSERISCI.

Ad esempio, per trovare la differenza tra due numeri, premere “= e il segno uguale apparirà nella barra di stato; ora digita entrambi i numeri con il segno meno (-) e premi il tasto accedere chiave. Ora, per stampare la differenza, premere P oppure usa il :Mettere comando.

Per accedere al valore del registro delle espressioni, utilizzare il file :reg “= comando.

Allo stesso modo, per ottenere il valore assoluto di due numeri, utilizzare il comando =abs(valore1-valore2) espressione.

Allo stesso modo, per memorizzare l'output del comando di sistema, è possibile utilizzare questo registro (espressione). Ad esempio, se voglio leggere il contenuto del file utilizzerò =sistema('cat ') , premendo il tasto Invio il contenuto dell'output verrà memorizzato. Usando il P O :Mettere comando, il contenuto dell'output può essere inserito nel buffer.

Esiste una gamma di espressioni che possono essere utilizzate in Vim. Per saperne di più sulle espressioni Vim, utilizzare :aiuta l'espressione E :help sintassi-espressione comandi.

8. Selezione e cancellazione dei registri (“*, “+, “~)

Vim ha due registri di selezione “* (citatore) e “+ (quoteplus) che vengono utilizzati per memorizzare il testo dalla GUI. Questi registri vengono utilizzati per copiare testo da programmi esterni come browser o qualsiasi altro elaboratore di testi.

Ad esempio, se copi una selezione di testo da un browser, utilizzando ctrl+c O cmd+c verrà archiviato nel file “* Registrati. Tuttavia, non è possibile utilizzare P O :Mettere per incollare questo testo nell'editor Vim. Utilizzo '*P per inserire nell'editor Vim il testo copiato da applicazioni esterne.

È importante notare che entrambi “+ E “* i registri sono collegati agli appunti, quindi entrambi (“*p, “+p) può essere usato per incollare il testo nell'editor Vim. Allo stesso modo, per inserire testo da Vim, utilizzare “*sì per estrarre una riga e incollarla in qualsiasi applicazione GUI, utilizzare ctrl+v o cmd+v.

È essenziale notare che se entrambi i registri (* e +) stanno facendo la stessa cosa, allora qual è il punto? Vim ha due registri di selezione “*, “+ facendo lo stesso lavoro e questo grazie al sistema a finestre X11. L'X11 fornisce due metodi per memorizzare il testo, uno è selezioni e l'altro lo è buffer di taglio . Le selezioni sono di proprietà dell'applicazione e vengono perse alla chiusura dell'applicazione, mentre i buffer tagliati mantengono il testo memorizzato nell'X-server. Per questi due tipi di memorizzazione vengono utilizzati i registri “* e “+. Per saperne di più, utilizzare :aiuta la selezione x11 comando.

Successivamente, il registro a discesa “~ che viene utilizzato per memorizzare il testo dell'ultima operazione di trascinamento. Ad esempio, se si rilascia una selezione di testo da un'applicazione esterna, questa verrà memorizzata nel registro di rilascio.

Se trovi difficile incollare dall'applicazione esterna utilizzando tre tasti diversi, puoi mappare la selezione da memorizzare nel registro senza nome.
Apri il vimrc file, luogo impostato appunti=senza nome al suo interno e salvare il file. Ora, ogni volta che copi da un'applicazione esterna, puoi facilmente incollarla utilizzando il file :Mettere comando o tasto p.

Nota : Il registro a discesa (~) sarà disponibile solo se Vim è compilato con +dnd. Attualmente è disponibile solo per la GUI GTK.

9. Registro dei buchi neri (“_)

Se esegui un'operazione di copia o cancellazione nell'editor Vim, per impostazione predefinita memorizza il testo nei registri. Se si desidera cancellare il testo senza memorizzarlo in un registro, utilizzare il registro del buco nero. Questo registro non modificherà il registro senza nome (“”) in caso di eliminazione del testo.

Ad esempio, se voglio eliminare tutte le righe senza memorizzarle nel registro senza nome, selezionerò prima tutte le righe utilizzando ggVG e poi premere '_D tasti per cancellare tutte le righe. Allo stesso modo, per eliminare una singola riga in un buco nero, utilizzare “_dd .

10. Registro dell'ultimo modello di ricerca (“/)

Come suggerisce il nome, questo registro salva l'ultimo modello di ricerca utilizzando il file / O ? operatori. Ad esempio, se cerchi /Linux , quindi utilizzando '/P incollerà la parola Linux.

Vim usa questo registro per la navigazione con il file N E N chiavi dopo la ricerca.

È un registro scrivibile, il suo contenuto può essere modificato utilizzando :let. Ad esempio, per salvare Linux in questo registro, utilizzare :let @/='Linux'.

Registri e Macro

In Vim le macro vengono salvate anche nei registri nominati (a-z). Se non sei a conoscenza delle macro, le macro sono comandi impostati memorizzati in un registro. Questo insieme di comandi può essere eseguito semplicemente utilizzando il segno @ seguito dal nome del registro della macro. In sostanza, le macro eliminano la necessità di digitare più comandi ripetutamente.

Ad esempio, per memorizzare una macro in un registro M , Userò qm q . Voglio trasferirmi in 5 linee giù utilizzando 5j ed elimina la riga utilizzando gg . Utilizzo, mq per avviare la registrazione della macro, quindi premere 5j E gg . Ora, per uscire dalla registrazione della macro, premere Q . Per verificare se la macro è memorizzata o meno, :reg “m oppure :reg m.

Per eseguire questi comandi con un registro macro, utilizzare il file :@M comando.

Cancellazione di un registro

Non esiste un approccio semplice per cancellare un registro perché la maggior parte dei registri non ha bisogno di essere cancellata perché prima o poi verrà sovrascritta. Tuttavia, esistono alcune tecniche per cancellare un valore di registro nell'editor Vim.

1. Registrare una macro vuota per cancellare un registro. Ad esempio, per cancellare il registro m, utilizzare mq .

2. Impostare il testo vuoto utilizzando permettere . Ad esempio, per cancellare il registro m, utilizzare :let @m=''.

3. Utilizzare il setreg() funzione con una stringa vuota come argomento. Ad esempio, per cancellare il registro m uso :call setreg('m', ').

Conclusione

Esistono 10 registri diversi con funzionalità diverse, il che rende quasi impossibile ricordarli. Se sei un principiante, ti consiglio di tenere a mente solo tre registri, registro senza nome (“”) , registri numerati (0-9) e registri denominati (a-z) .

Per memorizzare il testo in un registro, utilizzare una citazione (“) firmare con il nome del registro seguito da un comando dell'operatore (y, d, c) . Per incollare il testo da un registro, utilizzare i comandi p o P preceduti da virgolette (“) e registrare il nome.

Devi averne sentito parlare, se stai eseguendo un'attività più di due volte, automatizzala. I registri Vim possono essere estremamente utili per automatizzare le attività e, in definitiva, migliorare l'esperienza. Per saperne di più sui registri Vim, utilizzare il file :aiuto registri comando.