ottimizza il surround con virgolette
Voglio racchiudere una parola tra virgolette
Ecco il mio set di comandi:
ciw- poi quando sono in modalità di inserimento, digito '(uso l'
estensione vim su Visual code quindi ne ottengo due'non so se è il caso di vim "normale") - quindi Ctrl+ C+t
- poi p
Funziona, ma potrebbe esserci una versione più breve per raggiungere questo obiettivo. Potresti aiutare ?
Risposte
Puoi provare il plugin vim-surround . Per mettere una parola tra virgolette andrai ysiw'. Il plugin ti dà il potere di:
aggiungi (
ysiw")word -> "word"cambiare (
csiw"')'word'cancella (
ds')word
l'ambiente circostante non solo di singole parole ma di tutti i tipi di oggetti di testo:
racchiudere le parole tra parentesi (
ysi)")def func(some sequence of words) -> def func("some sequence of words")cambia le parentesi in parentesi quadre (
cs)])list = (var1, var2, var3) -> list = [var1, var2, var3]
Se stai utilizzando l'estensione VS Code che penso tu sia, la mia comprensione è che supporta almeno alcuni plugin e uno di questi è vim-surround . Se questo è il caso e sei aperto all'utilizzo dei plugin, vai all'ultimo paragrafo. Altrimenti, continua a leggere.
Dalla modalità Normale con il cursore sul primo carattere della parola potresti fare ...
i"<C-O>f<Space>"<Esc>
Ctrl-O, da Inserisci, consente di immettere un comando in modalità normale prima di tornare a Inserisci.
f<Space> va al carattere spazio successivo sulla riga (dopo la parola).
Il problema con questo è se la parola non è seguita da uno spazio (ad esempio, sei alla fine della riga o è seguito da un segno di punteggiatura). Dovresti regolare il comando della modalità Normale (ad esempio su f.o $<Left>).
Questo è solo un esempio di come ottenere ciò, ma penso che piuttosto che provare a ottimizzare un comando manuale dovresti usare qualcosa di più robusto (ma complicato) e inserirlo in una mappatura. Ad esempio questo comando di sostituzione:
:%s/\<\w*\%#\w*\>/"&"
Questo dice che prendi la posizione del cursore ( \%#) e qualsiasi carattere della parola che lo circonda (entrambi \w*) e sostituiscilo con se stesso racchiuso tra virgolette.
Una mappatura in modalità normale per questo:
:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>
Ora hai ottimizzato le cose fino a premere un tasto o due ... qualunque sia la lunghezza della mappatura che scegli.
Quello che suggerirei davvero, però, è di ottenere solo il plug -in vim-surround . Quindi puoi facilmente racchiudere le parole (e altro) con qualsiasi cosa con cui normalmente racchiuderesti le parole (ad es. Parentesi).