Se eu usar:
:tabedit file1 file2
Eu recebo:
E172: Only one file name allowed
Existe alguma maneira de usar :tabedit
com vários nomes de arquivos? Ou outra maneira de abrir várias guias ao mesmo tempo?
tabbed-user-interface
Martin Tournoij
fonte
fonte
:args *.c | tab all
. A outra pergunta é mais popular que essa, por isso é bom vinculá-la também.Respostas:
Dados os problemas e a complexidade da minha outra resposta, usando o modo "interno", modificando a lista de argumentos, eu adicionei pela própria função pequena para fazer isso:
Agora você pode usar
:Tabedit *.vim
. Essa função expandirá todos os padrões de globbing e será executada:tabedit <f>
para cada arquivo. Você pode adicionar quantos nomes de caminho quiser, por exemplo, tudo isso funciona:Bem, e assim por diante ...
Eu coloquei isso em um pouco globedit.vim plugin, que também contém comandos para
:Edit
,:Split
, etc.fonte
[<f-args>]
vez de"<args>"
- dessa forma, opattern
parâmetro será uma Lista (matriz) e você não terá que lidar com a divisão manual da string. (2) Passe um diferente de zero como o terceiro argumentoglob()
para que ele retorne uma lista. Então você pode evitar a divisão manual também. Você vai precisar para passar0
como o segundo argumento para ignorá-lo sem afetar o comportamento:glob(l:p, 0, 1)
.Até onde eu sei, a única maneira integrada de fazer isso é:
Primeiro, o
:args
substituirá a lista de argumentos. A lista de argumentos lista os arquivos com os quais você abriu o Vim; issovim file1 file2
significa que a lista de argumentos contémfile1
efile2
.Podemos modificar isso em tempo de execução, e o Vim abrirá um buffer para cada nova entrada na lista de argumentos.
Veja
:help argument-list
para mais informações.O
:all
comando abre uma janela para cada entrada na lista de argumentos, o:tab
comando executa um comando e abre uma nova guia quando o comando fornecido abrir uma nova janela.Ressalvas
Existem algumas advertências para esse método.
Antes de tudo, não há verificação de duplicatas; portanto, você pode terminar com 2 ou mais guias para o mesmo buffer.
Mas o maior problema é que ele substitui todas as suas guias pelo que está na lista de argumentos; então você perdeu todas as guias existentes.
Você pode contornar um pouco isso usando
:argadd *.vim
para adicionar à lista de argumentos, em vez de substituí-lo; mas comandos como:edit
ou:tabedit
se não alterar a lista de argumentos, e você vai perder os guias a menos que você adicioná-los à lista de argumentos (você ainda tem-los na lista de buffer, embora). Você também pode não querer abrir tudo na sua lista de argumentos em uma guia, talvez apenas queira abrir 2 arquivos como uma guia adicional.Talvez você possa tornar isso um pouco melhor adicionando primeiro adicionando todas as guias atualmente abertas à lista de argumentos (que eu realmente não consigo trabalhar), mas isso ainda está longe de ser perfeito. Se uma guia tiver 2 ou mais janelas, ela ainda será modificada ...
fonte
:argdo tabedit %
, o que abre uma nova guia para cada argumento. Começar com uma guia e abrir n novas naturalmente deixaria você com n + 1 guias.:tab all
é uma solução muito melhor.Você pode usar o
:next
comando, por exemplo:ou:
fonte
:args *.vim
? Pelo menos, ele se comporta o mesmo, e:help next_f
documentos como sendo o mesmo ...Na linha de comando, você pode usar:
E se você esqueceu de usar
-p
ainda, pode usarAliás, não se esqueça que a variável
tabpagemax
(valor padrão 10) limita quantas guias você pode abrir dessa maneira.fonte
Na verdade, você pode abrir novas guias e manter suas guias atuais sem escrever novas funções (consulte esta resposta no Stack Overflow ):
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 argdo
para entender o porquê).fonte
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
Você precisa pressionar Enter para limpar o prompt e digitar:close
para remover o último ( aba vazia) ... é muita digitação, e só vale a pena se você estiver abrindo muitas abas (para 2 ou 3 arquivos, usar apenas:tabe
duas vezes seria mais rápido).