In VIM, è possibile utilizzare il testo selezionato nella clausola sostituto senza ridigitare esso?
-
16-09-2019 - |
Domanda
Diciamo che ho una parola selezionata in modalità visiva. Vorrei eseguire una sostituzione di quella parola e tutte le altre istanze di quella parola in un file utilizzando s //. C'è un modo per utilizzare il testo evidenziato nella parte s/<here>/stuff/
senza dover ridigitare?
Soluzione
Certo. Se è stata selezionata la parola, basta ank "y", e poi digitare:
:%s/<ctrl-r>"/something else/g
Dove si preme il tasto Ctrl con il tasto R, ed "è solo" il carattere.
Tutti i tasti premuti:
y:%s/<ctrl-r>"/what to put/g<enter>
Altri suggerimenti
Se hai cercato per il testo prima di poter utilizzare
/ CTRL-R
per inserire l'ultimo elemento di ricerca nella ricerca e sostituire stringa.
È possibile controllare questa pagina per altri trucchi simili:
Non è necessario tirare la parola, posizionare il cursore sulla parola e poi:
:%s/<C-r><C-w>/bar/g
Un altro modo per accedere al registro contenuto dalla riga di comando è via variabili @
. Quindi, se si yank testo nel registro di default, sarà in un @"
variabile chiamata.
:exe '%s/' . @" . '/stuff/'
Ecco una mappatura per rendere questo facile da digitare:
vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>
Ora è possibile evidenziare qualcosa in modalità visuale, tipo \s
, digitare la sostituzione e colpire Enter
. depesz versione s 'fa anche una buona mappatura (quasi esattamente come lui digitato):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>