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.