Di 'che ho il seguente
printf(text goes here);
e seleziono "testo va qui" in modalità visiva ...
Come posso cambiarlo rapidamente in
printf("text goes here");
Di 'che ho il seguente
printf(text goes here);
e seleziono "testo va qui" in modalità visiva ...
Come posso cambiarlo rapidamente in
printf("text goes here");
Risposte:
Questo ha lo scopo di rispondere alla domanda specifica che hai posto. Dichiari di aver selezionato visivamente del testo e vuoi racchiuderlo tra virgolette. Per farlo, esegui:
:s/\%V\(.*\)\%V/"\1"/
Per dividerlo in parti:
:
ti permette di inserire i ex
comandi.
s/old/new/
è il solito comando sostitutivo.
\%V
è un atomo non documentato per contrassegnare l'inizio del testo selezionato
\(.*\)
seleziona tutto e salvalo nella selezione 1.
Il secondo \%V
indica la fine del testo selezionato.
Il testo di sostituzione è everyting che è stato selezionato, che è memorizzato in \1
, circondato da citazioni: "\1"
.
Questo comando si applica riga per riga. Pertanto, potresti ottenere risultati indesiderati se il testo selezionato si estende su più righe.
vim
bug o no. In entrambi i casi, una semplice soluzione consiste nell'evidenziare un personaggio in più.
e
è l'ultimo carattere nella selezione, il secondo% V non è all'interno della selezione e ignora l'ultimo e
.
.
dopo il secondo \% V
Dovresti cercare di più. Quali comandi Vim possono essere utilizzati per citare / annullare la citazione delle parole?
citando:
surround.vim sarà la tua risposta più semplice. Se sei davvero contrario a usarlo, ecco alcuni esempi di cosa puoi fare. Non necessariamente il più efficiente, ma è per questo che è stato scritto surround.vim.
- Cita una parola, usando virgolette singole
ciw'Ctrl+r"'
ciw
- Elimina la parola su cui si trova il cursore e finisci in modalità inserimento.'
- aggiungi la prima citazione.Ctrl+r"
- Inserisci il contenuto del"
registro, ovvero l'ultimo yank / cancella.'
- aggiungi il preventivo di chiusura.- Annulla la citazione di una parola racchiusa tra virgolette singole
di'hPl2x
di'
- Elimina la parola racchiusa tra virgolette singole.hP
- Sposta il cursore a sinistra di un posto (sopra la citazione di apertura) e metti il testo appena cancellato prima della citazione.l
- Spostare il cursore a destra di un posto (sopra la citazione di apertura).2x
- Elimina le due virgolette.- Cambia virgolette singole in virgolette doppie
va':s/\%V'\%V/"/g
va'
- Seleziona visivamente la parola tra virgolette e le virgolette.:s/
- Inizia una sostituzione.\%V'\%V
- Abbina solo virgolette singole all'interno della regione selezionata visivamente./"/g
- Sostituiscili tutti con doppie virgolette.
S"
.
ysi)"
senza modalità visiva.
La sequenza di comandi cw""<ESC>P
è la cosa vicina che può fare un contorno di testo e funziona tagliando la parola (stringa di caratteri alfanumerici: az, AZ, 0-9, incluso _ [trattino basso]), quindi inserisce il testo ""
e premendo il tasto tasto Esc ( <ESC>
per uscire dalla modalità di inserimento uno è quindi in grado di incollare prima del cursore. Pertanto il comando si scompone in:
c
- tagliato nel registro
w
- regex match \ w
""
- inserire due "
caratteri nella posizione corrente del cursore
<ESC>
- Scorciatoia VIM per premere il tasto Esc. In questo contesto, tornare alla modalità comando
P
- incolla il registro corrente
Tuttavia, nel caso di serie più lunghe di stringhe sulla linea corrente che si desidera circondare, è necessario utilizzare i comandi regex di sostituzione con un gruppo di acquisizione come:
:s/\(\w\+\)/"\1"/g
Questo comando memorizza la regex corrispondente risultante acquisita come gruppo '1' e sostituisce la preforma per inserire il contenuto del gruppo tra virgolette. Quindi, dato il testo:
fubar: 1
diventa:
"fubar": 1
Il file della guida introduttiva di vim è una delle migliori risorse per chiunque, insieme al :help
comando.
Non utilizzare la modalità visiva. Basta cambiare il testo tra parentesi in "", quindi incollare il testo eliminato tra. ci) "" <Esc> P
Se si desidera utilizzare la modalità visiva, funziona allo stesso modo, è sufficiente rilasciare la parte 'i)': c "" <Esc> P
( <Esc> significa premere il tasto Esc)
Ecco come ho citato alcune delle mie selezioni visive:
Mentre sei in modalità VISUAL seleziona il testo che devi citare, quindi premi qqc""<Esc>Pq
qq
inizia a registrare le tue azioni nel record qc
inserisce il testo selezionato in un registro e passa alla modalità INPUT""
mette i simboli necessari per racchiudere il testo<Esc>
passa alla modalità NORMALEP
mette il testo dal registro nella posizione del cursore, tra virgoletteq
indica la fine della registrazione delle azioniOra, durante la stessa sessione, sarai in grado di citare qualsiasi blocco visivo semplicemente digitando @q
, che riproduce le nostre azioni precedentemente registrate
???
Dopo aver usato @q
una volta, sarà possibile emettere @@
(ripetere l'azione precedente) per citare le successive selezioni visive
printf(text goes here);
diventaprintf("text goes her"e);
.