Como o ZyX disse no #vim, essa pergunta soa como "Por que os especialistas em Vim preferem saboroso do que quente?".
Os "especialistas em Vim" não preferem buffers em vez de guias: eles usam buffers como os proxies de arquivos e as guias como os espaços de trabalho. Buffers e guias têm propósitos diferentes, portanto, preferir um ao outro não faz sentido algum.
O problema com buffers e guias é de confusão , causado por uma combinação de fatos independentes.
A maioria dos editores de texto e IDEs "modernos" usa uma metáfora de tabulação para representar arquivos carregados. Essa metáfora atua como um sistema de informação - mostra ao usuário quais arquivos são abertos e seu estado - e como um dispositivo interativo - permite ao usuário manipular (reordenar, selecionar, fechar ...) esses arquivos abertos. Apesar de suas muitas limitações, as guias estão em todos os lugares e as pessoas estão acostumadas a elas e as esperam em todos os lugares.
O Vim introduziu as guias na 7.0 como uma maneira de seus usuários criarem "espaços de trabalho" ad-hoc. Nada em seus recursos, opções específicas, comandos específicos ou :help
seções sugere que as guias possam ou devam ser usadas como proxies de arquivo.
Nada, exceto o nome e a aparência das "guias", é claro, o que leva a muita confusão.
Sem :set hidden
, que é desativado por padrão e não é muito fácil de encontrar, o Vim torna impossível mudar para outro buffer sem gravar o atual ou abandonar suas alterações. Os novos usuários, que desconhecem essa opção, não têm escolha a não ser recorrer ao uso intenso de janelas ou ao recurso "semelhante a guia" mais próximo que podem encontrar: guias.
"Página de guia" é uma escolha infeliz de nome para esse recurso, especialmente em uma época dominada pela idéia de que ler a documentação é uma perda de tempo.
No Vim, as guias são uma abstração criada em cima de janelas, elas mesmas uma abstração criada em cima de buffers. Cada novo nível adiciona recursos úteis, mas restringe seu fluxo de trabalho.
O "caminho do buffer"
Com um fluxo de trabalho baseado em buffer, os arquivos com os quais você está trabalhando são distribuídos em uma única dimensão. Você pode percorrer seus buffers, acessar um buffer específico digitando parte de seu nome (com conclusão) ou seu número, alternar entre buffers, segmentá-los facilmente. Basicamente, não há atrito.
Oito buffers abertos, apenas um visível:
Mudando por número:
Mudando por nome:
Buffers são proxies de arquivo do Vim. Se você pensa em termos de arquivos, pensa em termos de buffers.
O "caminho da janela"
Com um fluxo de trabalho baseado em janela, seus "arquivos" são distribuídos ao longo da mesma dimensão "virtual" única como seriam se você usasse apenas buffers e ao longo de duas outras dimensões "físicas". Mas os espaços cartesianos nos quais essas dimensões são encontradas são quase completamente separados: mover para outro buffer ainda significa "mover para outro arquivo", mas mover para outra janela não. O buffer que corresponde ao arquivo desejado pode ser exibido nessa janela, mas também pode ser exibido em outro, talvez em outra página da guia, ou de modo algum.
Com o Windows, a navegação entre arquivos abertos se torna muito complexa ou simplista, mesmo com 'switchbuf'
e :sb
. Principalmente porque você é forçado a usar dois conjuntos de comandos para o que é essencialmente a mesma coisa: acessar um buffer.
O Windows tem seu uso, conforme descrito abaixo, mas eles não têm o necessário para substituir os buffers no fluxo de trabalho de ninguém.
Aqui estou trabalhando em um esquema de cores Vim. As duas janelas têm visões diferentes do mesmo buffer: a superior serve como referência, com uma tabela dos códigos de cores usados no esquema de cores, e a inferior é onde trabalho:
O Windows não é projetado como proxies de arquivo e não pode ser transformado em um: são "contêineres" ou "viewports" projetados para oferecer uma visualização em um buffer. Nem mais nem menos.
O "caminho da guia"
Com um fluxo de trabalho baseado em guias, você basicamente tenta imitar a experiência do usuário com a qual está acostumado em seu editor anterior, ignorando completamente a própria natureza das páginas de guias do Vim. Se esquecermos por um momento que essa estratégia geralmente é muito improdutiva, também é impossível, assim como no Windows, forçar o Vim a aderir ao paradigma "um arquivo = uma guia" sem perder muita flexibilidade.
Ainda trabalhando com os mesmos arquivos acima, a tabline ocupa um espaço significativo para praticamente nenhum benefício. Todos os meus arquivos e todas as minhas guias são chamados, javascript*.vim
então não posso fazer isso 3gt
e ter certeza de que acabarei no lugar certo e é impossível alcançar uma guia específica por nome. Acrescente a isso o fato de que seu rótulo pode muito bem ser inútil, mas perfeitamente lógico [Quickfix List]
… Como não há uma maneira prática de vincular um arquivo / buffer a uma página de guia, você basicamente tem apenas uma maneira prática de navegar entre as páginas de guia. / buffers / arquivos: ciclismo.
E sim, minha tabline está cheia de apenas 8 tabs, imagine se eu tivesse 20!
Oito buffers abertos em oito guias (incorretas)
Duas guias para duas tarefas específicas (direita)
As páginas da guia são "contêineres" ou "viewports" projetadas para conter uma ou mais janelas; elas também são "contêineres" projetadas para conter buffers.
Em conclusão
Os "especialistas em Vim" (suponha que eu possa falar como se eu fosse um) não preferem buffers em vez de abas: eles apenas usam o Vim como ele foi projetado e estão perfeitamente confortáveis com esse design:
Os "especialistas em Vim" têm 2, 30 ou 97 buffers carregados e estão muito felizes por não terem de lidar com a distribuição espacial;
quando eles precisam comparar dois arquivos ou trabalhar em uma parte do buffer atual, mantendo outra como referência, os "especialistas em Vim" usam o Windows porque é assim que eles devem ser usados;
quando eles precisam trabalhar por um tempo em uma parte separada do projeto sem mexer com a visualização atual, os "especialistas em Vim" carregam uma nova página de guia.