Como abro todos os arquivos no diretório atual e em todos os subdiretórios usando o vim?

7

Até agora eu tenho usado vim */** , que parece abrir todos os arquivos em subdiretórios, mas não no diretório atual, e vim * , que abre todos os arquivos no diretório current . Mas como abro todos os arquivos no diretório atual e todos os subdiretórios?

    
por quant 09.08.2014 / 09:07

2 respostas

8

com zsh :

vim ./**/*(.)

Outras conchas:

find . \( -name '.?*' -prune \) -o -type f -exec vim {} +

Para abrir apenas os arquivos (não ocultos) regulares (não diretórios, links simbólicos, canais, dispositivos, portas, sockets ...).

vim ./**/*(D-.)

Outras camadas, GNU find :

find . -xtype f -exec vim {} +

Para também abrir arquivos ocultos (e percorrer diretórios ocultos) e links simbólicos para arquivos regulares.

E:

vim ./***/*(D-.)

outras conchas:

find -L . -type f -exec vim {} +

também percorre links simbólicos ao procurar subdiretórios.

Se você quiser apenas um nível de subdiretórios:

vim ./* ./*/*

Observe que é um bom hábito prefixar seus globs com ./ caso alguns nomes de arquivos comecem com - ou + .

(é claro que os find também funcionam em zsh . Note que eles podem executar várias instâncias de vim se a lista de arquivos for grande).

    
por 09.08.2014 / 09:13
1

No bash com shopt -s extglob :

for file in **/**; do [[ -f "$file" ]] && vim "$file"; done

Observe que, de acordo com O comentário de Stéphane , antes do Bash 4.3, isso seguiria quaisquer links simbólicos nos diretórios abordados.

    
por 09.08.2014 / 09:14

Tags