Quiero editar varios archivos que coinciden con una expresión global. Por ejemplo, para editar todos los archivos de configuración de git en directorios secundarios, puedo hacer esto en el shell:
vim */.git/config
En la :línea de comando de Vim , esperaba :find */.git/confighacer algo similar (es decir, abrir todos los archivos que coinciden con la expresión global), pero en cambio se queja E77: Too many file names.
¿Hay un comando Vim o una línea para abrir varios archivos que coinciden con una expresión comodín / glob (que no implica escribir una función)?
fuente

:args */.git/configtambién llena la lista de búfer, por lo que:bnexttambién funciona. ¿Te parece extraño? (Vim 7.4.52 y Neovim)]ala:argslista si está instalado github.com/tpope/vim-unimpaired .:argadd file*puede hacer.**), debe haberglobstarconfigurado, vea: Haga coincidir todos los archivos en todos los directorios anidados con el globing de shell .Para abrir archivos coincidentes en pestañas separadas ...
Explicación:
:n(:next) establece la lista del siguiente archivo en todas las coincidencias.tab allabre todos los archivos en la lista del siguiente archivo en pestañas nuevas.... o ...
Explicación: En
glob(…), el 0 significa incluir todos los archivos coincidentes, incluso si de otro modo se ignorarían debido a la configuraciónsuffixesowildignorecase. El 1 significa devolver una lista, en lugar de una cadena.exe "tabe" fes una forma abreviada deexecute "tabedit" fy significa abrir el archivo especificado por la variablefen una nueva pestaña.fuente
:n */.git/config | bufferfunciona.No esperes nada antes de leer la documentación.
Además de la respuesta de Tom, puede usar directamente
:nextcomo alternativa a:args.fuente
Abrir archivos
vim */.git/configdefinitivamente debería funcionar. Si no es así, debe actualizar su Vim a 7.4 (la versión anterior tenía más errores).Alternativamente, pruebe uno de los siguientes (dentro del editor):
fuente
:args.argses solo la solución, pero además le muestra cómo usar la expansión de shell dentro de vim it-self en caso de que otros usuarios quieran usarlo para soluciones más complejas, mediante el usofind, como este . Así que creo que le da un valor adicional a su pregunta. Así que espero que esté bien contigo.vim */foo, y no hay forma de que pueda estar relacionado con la versión de Vim, porque esa es una función de shell .Obvio, pero no mencionado anteriormente: por ejemplo, busque todos los archivos sql que tengan la cadena create_table en su nombre
y verifícalos
y abra el primero
fuente