In VIM, è possibile utilizzare il testo selezionato nella clausola sostituto senza ridigitare esso?

StackOverflow https://stackoverflow.com/questions/1477652

  •  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?

È stato utile?

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:

http://www.vim.org/htmldoc/insert.html

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top