2010-03-13 12 views
11

Estoy tratando de averiguar cómo puedo definir un autocmd que influya en todos los archivos en una ruta específica.Con vim, ¿cómo puedo usar autocmd para archivos en subdirectorios de una ruta específica?

El autocmd He tratado es algo así como

autocmd BufNewFile,BufRead /specificPath/** imap <buffer> .... 

Ahora, yo esperaría que este autocmd a utilizar si he editado, por ejemplo, /foo/bar/specificPath/baz/something/bla.txt , pero no si edité /foo/bar/here/and/there/moreBla.txt

Si comienzo vim estando en un directorio 'arriba' specificPath, esto funciona como yo quiero. Pero no sucede si estoy debajo de ese directorio. Obviamente, el patrón de autocmd se compara con el nombre de archivo relativo, no el absoluto.

Respuesta

11

Por lo tanto, he hecho esto en mi código con rutas bajo una ruta particular. Que tiene que hacer:

autocmd BufRead,BufNewFile */somepath/* set filetype=sometype 

Al menos, eso es lo que yo estaba usando para establecer un tipo de archivo determinado por las cosas bajo una ruta de la biblioteca particular. Espero que eso ayude con tu ejemplo.

+0

Eso fue estúpido de mi parte, yo debería haber pensado en el asterisco delante del patrón ... –

+0

lo que si quiero dar las rutas absolutas y no es parte de un camino? como '/ home/user/work /' ¿habrá un asterisco anterior? –

+0

Creo que hay una manera de hacerlo también, simplemente se pierda el líder * en la lista. Sin embargo, probablemente necesites el líder/si quieres unir algo como/home. – AlBlue

12

Esto responderá a todas sus preguntas. :)

:h autocmd-patterns 
+3

Honestamente, encontré esto más útil que la respuesta aceptada, así que lancé un voto positivo en tu dirección. la próxima vez, intente proporcionar un ejemplo o texto citado de la documentación. –

Cuestiones relacionadas