che sto cercando di sostituire tutte le occorrenze di hello(...)
da hello[...]
vim sostituzione regex
Ho provato cose come %s/hello\((.*?)\)/hello\[$1\]/
senza alcun successo
Qualsiasi aiuto pls?
che sto cercando di sostituire tutte le occorrenze di hello(...)
da hello[...]
vim sostituzione regex
Ho provato cose come %s/hello\((.*?)\)/hello\[$1\]/
senza alcun successo
Qualsiasi aiuto pls?
Questa è la sintassi Perl, non Vim. Nelle espressioni regolari di Vim, almeno per impostazione predefinita, le parentesi corrispondono a se stesse e le parentesi catturate con backslash, ovvero l'opposto di Perl. Inoltre, Vim non comprende il modificatore non avido ?
e i gruppi di cattura sono interpolati con \
n, non $
n. Prova questo:
%s/hello(\([^)]*\))/hello[\1]/
In alternativa, è possibile utilizzare il modificatore \v
("molto magico") per rendere il comportamento rispetto a caratteri speciali e backslash più Perl-like, anche se non fa capire Vim *?
o cambiare la sua sintassi di interpolazione:
%s/\vhello\(([^)]*)\)/hello[\1]/
si noti inoltre che non è necessario barre rovesciate sulle parentesi quadre nel testo di sostituzione - il lato destro di una sostituzione di comando è non un'espressione regolare, in modo da don Non devi preoccuparti della maggior parte dei personaggi sono speciali in uno. Quasi solo il backslash è di per sé speciale e può essere utilizzato per includere gruppi di cattura o un'istanza letterale di se stesso o delimitatore.