2016-04-20 10 views
5

Possiamo scrivere funzioni/subroutine in csh o vim?Taglia automaticamente le barre inverse in vim

Fondamentalmente, la mia domanda è come tagliare i backslash all'interno di una stringa automaticamente che usiamo per la ricerca in vim.

Diciamo:

Contenuto del file file_a è:

abcd 
a/b/c/d 

Ora, se cerco 'abcd' dentro vim con "/ abcd" in modalità di comando, si abbinerà abcd (prima linea). E se cerco 'a/b/c/d', non corrisponde a 'a/b/c/d'. Corrisponde solo a "a" da "a/b/c/d".

Per abbinare l'intero 'a/b/c/d', avrei bisogno di cercare a\/b\/c\/d. Tagliare le barre rovesciate è un dolore ogni volta che si desidera cercare stringhe con barre rovesciate al suo interno. :)

Qualcuno di voi ha risolto prima?

risposta

5

In Vim:

È possibile effettuare ricerche all'indietro, dove il separatore è ? invece di /, quindi / non ha bisogno di essere sfuggito: ?a/b/c/d; per passare alla prossima partita verso il basso, utilizzare N.

Oppure è possibile impostare il modello di ricerca utilizzando :let @/="a/b/c/d" (ciò non sposta il cursore), quindi utilizzare n per passare alla corrispondenza successiva.

È possibile anche definire il proprio comando:

function! FindSlashed(arg) 
    let @/=a:arg 
    norm n 
endfunction 
command! -nargs=1 S call FindSlashed(<q-args>) 

che può essere utilizzato in questo modo:

:S a/b/c/d 

EDIT: let, non set.

+0

Grazie per la risposta. Sapevo della ricerca all'indietro. E questa è una soluzione, non una soluzione. Darò una prova al tuo secondo metodo. –

+3

Ovviamente è un tweak. Il modo previsto di utilizzare la ricerca è di sfuggire alle barre. – Amadan

+1

Seconda opzione: Ho provato a impostare ': set @/=" a/b/c/d "' ma non ha funzionato. Errori con: 'E518: opzione sconosciuta: @/='. Mi sono perso qualcosa? –

1

Non si tratta di cercare ma di sostituire. Ho pensato che potresti trovarlo utile mentre stai scrivendo le funzioni

Puoi usare alternate delimiters per il comando di sostituzione. vale a dire, invece di usare /, è possibile usare qualcosa come #

:s#a/b/c/d#this text will replace# 

Il comando sopra sostituirà a/b/c/d con this text will replace

+0

La domanda riguardava la ricerca non in sostituzione. –

+0

Sì, ho capito.Ho pensato che questo potrebbe essere utile per qualcun altro che legge questo post in futuro. Fammi vedere se c'è qualcosa di simile anche nella ricerca –

Problemi correlati