In Vim, c'è un modo per incollare il testo nella riga di ricerca?


105

Voglio cercarlo $maximumTotalAllowedAfterFinishe sostituirlo con $minimumTotalAllowedAfterFinish. Invece di digitare il testo lungo:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

C'è un modo per COPIARE questi lunghi nomi di variabili nella riga di ricerca, dal momento che sulla riga di comando non riesco a digitare " p" per incollare?


2
Immagino che anche tu debba sfuggire al primo $perché questo carattere significa la fine della riga.
Luc M

1
@LucM L'OP potrebbe anche usare un \Vpunto qualsiasi del pattern di ricerca per disabilitare i caratteri "magici".
dash-tom-bang

Risposte:


128

È possibile inserire il contenuto di un registro numerato o denominato digitando CTRLR {0-9a-z"%#:-=.}. Digitando CTRL-R CTRL-Wpuoi incollare la parola corrente sotto il cursore. Vedere:

:he cmdline-editing

per maggiori informazioni.


8
grazie per la risposta, la più comune per me è: CTRL+ R +(come per il contenuto degli appunti)
Peter Butkovic

4
Il 0registro contiene l'ultima stringa strappata.
Evgeni Sergeev

52

Copialo normalmente, quindi CtrlR"incolla. Ci sono molte altre CtrlRscorciatoie (ad esempio, una calcolatrice, il nome del file corrente, il contenuto degli appunti). Digita :help c_<C-R>per visualizzare l'elenco completo.


16

Copia:
1) v(o evidenzia con il mouse, in modalità visuale)
2) y(yank)

Incolla:
1) /(modalità di ricerca)
2) Ctrl + R + 0(incolla da registro strappato)


1
Stavo cercando questa risposta quando ho cercato questa domanda su Google, mi chiedo perché abbia voti negativi.
santiago arizti

15

Digita q:per entrare in modalità di modifica della cronologia in un nuovo buffer. Quindi modificare l'ultima riga del buffer e premere Enterper eseguirlo.


3
Ecco a cosa serviva quel buffer! Grazie (mi è sempre capitato di inciampare durante la digitazione: q e mi confondo)
gsk

3
q/è utile anche per accedere alla cronologia delle ricerche e incollare nuove ricerche.
79E09796

3

Oppure crea il comando in un buffer vim, ad esempio digitalo nel buffer:

s/foo/bar/gci

E copiarlo in un registro denominato, con "ayy(se il cursore si trova su quella riga!).

Ora puoi eseguire il contenuto del aregistro " " dalla riga di comando Ex di Vim con:

:[OPTIONAL_RANGE]@a

Io lo uso per tutto il tempo.


il tuo "ayy" è citato (e quindi errato) o non lo è (e quindi c'è un "errato" alla fine)
tzot

2

In genere, lo faresti con la selezione del mouse (forse CtrlInso CtrlCdopo la selezione) e poi, nella riga di comando / ricerca, facendo clic con il pulsante centrale (o ShiftInso CtrlV).

Un altro modo è scrivere la tua riga di comando / ricerca nel buffer di testo con tutte le modifiche disponibili nei buffer di testo, iniziando con :e tutto, quindi, sulla riga, fai:

"add@a

che memorizzerà l'intera riga di comando nel buffer ae quindi la eseguirà. Tuttavia, non verrà memorizzato nella cronologia dei comandi.

Prova a creare la seguente riga nel buffer di testo come esempio per le pressioni dei tasti sopra:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Infine, puoi entrare q:per accedere alla modifica della cronologia in un buffer di testo.


1

È possibile posizionare il cursore sulla parola che si desidera aggiungere al modello e quindi premere /o :per accedere alla modalità di ricerca o di comando, quindi premere CtrlRCtrlWper copiare la parola. fonte

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.