Le espressioni regolari (spesso abbreviate in "regex") sono espressioni scritte in un linguaggio dichiarativo utilizzato per abbinare schemi all'interno di stringhe.
Questo è ciò che ottengo dalla documentazione: \zs"avvia la parte evidenziata" dopo aver abbinato la regex precedente e \@<="avvia la parte evidenziata" dopo aver abbinato l' atomo precedente . Ma non capisco esattamente le sottigliezze di questo, quindi qualcuno può spiegare come differiscono un po 'più in profondità? Questo è …
Comando normale: l'ordinamento può ordinare le righe in base alla colonna o alla colonna virtuale ( \%co \%v), è possibile utilizzare la colonna logica di livello superiore come chiave di ordinamento? L'uso dell'espressione regolare sembra un po 'complesso per questo scenario (la colonna si trova alla fine della riga?) E …
Voglio creare uno script Vim di base che elimina semplicemente n righe, salta 1 riga e si ripete fino alla fine del documento. Non mi interessano le partite specifiche, voglio solo eliminare la riga. Per esempio; Quindi voglio ripetere il comando 3ddjper l'intero documento. Text I want to keep. Text …
Durante la modifica del file di sintassi, ho trovato qualcosa del tipo: \s*\%(\%(:\@<!\/\/.*\)\=\|\%(\/\*.*\*\/\s*\)*\)$ Ho familiarità con qualsiasi altro che \%e \@lì. Non riesco nemmeno a cercare su Google perché non so come si chiama. Quindi cos'è e cosa fa?
Esiste un'alternativa nella ricerca di vim e nella sostituzione di stringhe, che dover sfuggire a tutti i caratteri speciali nella stringa. Ad esempio, se voglio abbinare la stringa seguente e sostituirla con qualcosa [ERROR] Login unsucessful Quindi devo fare :%s/\[ERROR\]\ Login\ unsucessful/something/g E diventa molto più brutto e doloroso per …
Sto usando la seguente espressione regolare per abbinare una stringa di documentazione sotto una definizione della funzione Clojure: \vdefn.*\n\s*\zs"([^"]|\n)*" C'è un modo per eseguire il gqcomando in modalità normale (linee di formato) su tutte le corrispondenze di questo modello in un determinato file?
Ho un file con il seguente modello: foo 111 baz foo 222 baz foo 333 baz che deve essere trasformato in foo 111 bar 111 baz foo 222 bar 222 baz foo 333 bar 333 baz Quindi, duplica tutte le righe che iniziano con foo, e cambia solo foonel duplicato …
Mi imbatto spesso in una situazione in cui ho un file con molti casi misti. Per esempio, CamelCase and camelCase Sto cercando un sostituto dell'espressione regolare di Vim per produrre, AnotherCase and anotherCase In questo momento lo faccio in due passaggi dopo aver selezionato visivamente le linee, :s/CamelCase/AnotherCase/g :s/camelCase/anotherCase/g È …
Ho il seguente formato del file: <common> fitnes=0 genetic=1 method=0 </common> <inputs> foo=bar bar=foo </inputs> <limits> balance=200.00 </limits> e vorrei eliminare tutto ciò che sta tra <inputs>e </inputs>(escluso lo schema stesso) e sostituirlo con il contenuto di un altro file (ad es foo.txt.). In altre parole, si allinea con foo=bare …
Ho parole come lblSERINOdnelle frasi. Le parole sono separate da spazi bianchi. Voglio sostituire il dalla fine di tutte queste parole con u. Quindi, per esempio lblSERINOd, sembrerà lblSERINOu. Ho provato s/.*\ud /u /gma Vim dice che non riesce a trovare .*\ud. Qual è il problema qui?
Sto cercando di creare uno script per eseguire ricerche fuzzy all'interno di un buffer. L'idea principale è quella di prendere alcuni input e inserire .\{-}tra ogni coppia di caratteri, ad esempio foodiventa f.\{-}o.\{-}o. Funziona abbastanza bene, ma presenta molte partite non ideali. Penso che una ricerca confusa dovrebbe produrre prima …
Sono un po 'confuso sugli operatori di confronto regex di VimScript. Se guardo attraverso la :h =~?mia comprensione è che =~può essere usato per fare una corrispondenza regex ( ?rendendolo insensibile al maiuscolo / minuscolo). Ma questo codice stampa "no": let s:myVar = "S123" if s:myVar =~? "^S\d+" echo "yes" …
Ho un caso d'uso comune quando trasformo alcune espressioni python nel modo seguente: value 1 value 2 value 3 in ['value 1', 'value 2', 'value 3'] Il modo più semplice potrebbe essere quello di utilizzare una mappatura, ma volevo usare una sostituzione per questo compito. Finora ho ottenuto: s/\(.*\n\)\+/[&]/g Quale …
Voglio sostituire un personaggio con il suo valore letterale esadecimale. Ad esempio prima di regex: h Dopo regex: 0x68 Sto provando questo: s/\([a-z]\)/\=printf("%#02x", submatch(0))/ Ma questo lo sostituisce con 00 Che cosa sto facendo di sbagliato? È possibile?
Gli utenti di lingua inglese probabilmente non hanno questo problema, ma vim è piuttosto stupido quando si tratta di espressioni regolari. Nel mio caso, la maggior parte delle lettere dell'alfabeto turco al di fuori dell'alfabeto EN non sembrano qualificarsi come caratteri di parole. Dato un documento che contiene una parola …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.