Como fazer com que o vim abra vários arquivos em abas de uma só vez

85

É possível fazer com que o vim abra vários arquivos em guias, semelhante à maneira como o args <path>comando abrirá vários arquivos em buffers?

Executar algo como isso :tabe ./*resulta no erro "E77: Muitos nomes de arquivos", mesmo que o número de arquivos seja menor que o valor definido na tabpagemaxpropriedade.

(Acredito que a vim -p <files>opção será aberta em guias, mas espero encontrar uma maneira de fazer isso quando o vim já estiver aberto.)

Cinza
fonte
12
Obrigado por mencionar a opção -p; Isso é o que eu estava procurando
user72923
4
Encontrei essa pergunta pelo Google. Eu estava procurando como abrir vim com guias de linha de comando, vim -pera o que eu estava procurando :-)
Foguete Hazmat
2
Relacionado: Como posso abrir várias guias ao mesmo tempo? em Vim SE
kenorb 23/02
Relacionado: Abra vários arquivos em novas guias com o VIM no Stack Overflow.
Mihai Capotă 26/03
Relacionado: Como abrir muitas abas para muitos arquivos no vim? no Superusuário.
Mateusz Piotrowski

Respostas:

82
:tab all

abrirá todos os arquivos na lista de argumentos do Vim em guias individuais. A lista de argumentos é inicialmente definida como a lista de nomes de arquivos fornecidos na linha de comandos quando o Vim é iniciado. A lista pode ser alterada com os :argscomandos e relacionados. Vejo

:help :all
:help argument-list

Exemplo:

:args *.c
:tab all

abrirá todos os arquivos .c no diretório atual em guias individuais.

garyjohn
fonte
Não tenho certeza de como isso deve funcionar. Digamos, se eu quiser abrir todos os arquivos .txt no diretório atual, o que devo inserir? Se eu entrar :tab all *.txt, o vim contadores com "E488: caracteres à direita"
Ash
Eu editei a resposta para esclarecer o que eu quis dizer com "argumentos". Eu quis dizer a lista de argumentos de Vim, em vez de argumentos :tab all.
precisa saber é o seguinte
1
Eu não sei de um único comando que pode fazer isso, mas você pode colocar dois comandos em uma linha separando-os com uma barra vertical, como este: :args *.c | tab all.
precisa saber é o seguinte
9
A desvantagem é que o uso :tab allsubstitui as guias existentes. Por esse motivo, no meu caso de uso, ele não oferece muitos benefícios em reabrir arquivos vim -p. No entanto, se houvesse alguma maneira de inserir guias existentes :args, seria possível abrir novas guias e manter as existentes.
21412 Kevin Qi
3
Se uma guia já estiver aberta, substitua argaddpor args.
cdosborn
4

Na verdade, você pode abrir novas guias e manter as guias atuais sem escrever novas funções. Veja esta resposta no Stack Overflow: https://stackoverflow.com/a/11430615/200234

:args file1 file2 | argdo tabe

Você pode abrir uma nova guia vazia ( :tabe) antes de fazer isso, porque o primeiro arquivo será aberto na guia atual. Além disso, uma guia extra vazia será deixada aberta (veja :help argdopara entender o porquê).

Mihai Capotă
fonte
Se você estiver adicionando novas guias a um conjunto existente, não seria mais fácil apenas :tabe file1?
jpaugh 10/09
@jpaugh, a questão é sobre vários arquivos.
Mihai Capotă 10/09
Não :args | argdo taberesponderia a pergunta, no entanto? Qual o motivo da adição de novos arquivos dessa maneira?
jpaugh 10/09
@jpaugh, é isso que a pergunta pede: "Acredito que a opção vim -p <files> será aberta em guias, mas espero encontrar uma maneira de fazer isso quando o vim já estiver aberto."
Mihai Capotă