Eu observei a capacidade de usar guias no Vim (com :tabe
, :tabnew
etc.) como um substituto para minha prática atual de ter muitos arquivos abertos na mesma janela em buffers ocultos.
Gostaria que todos os arquivos distintos que eu abrisse estivessem sempre em sua própria guia. No entanto, existem algumas coisas que atrapalham isso. Como faço para corrigir estes:
Quando comandos gostam
gf
e^]
pulam para um local em outro arquivo, o arquivo é aberto em um novo buffer na guia atual. Existe uma maneira de ter todos esses tipos de comandos para abrir o arquivo em uma nova guia ou alternar para a guia existente com o arquivo, se ele já estiver aberto?Ao alternar buffers eu posso usar
:b <part of filename><tab>
e ele completará os nomes dos arquivos nos buffers existentes.<part of filename>
pode até ser o meio de um nome de arquivo em vez do começo. Existe um equivalente para alternar entre guias?
Um pouco atrasado para a festa aqui, mas surpreso por não ver o seguinte nesta lista:
:tab sball
- isso abre uma nova guia para cada buffer aberto.:help switchbuf
- isso controla o comportamento de comutação de buffer, tente:set switchbuf=usetab,newtab
. Isso deve significar alternar para a guia existente se o buffer estiver aberto ou criar um novo, se não estiver.fonte
switchbuf
-set switchbuf=useopen
é ótimo para evitar o comportamento irritante de:make
,:vimgrep
e comandos semelhantes que muda os buffers no layout da janela, mesmo quando o buffer já foi exibido.:se switchbuf=usetab,newtab
, quando usadobn
para alternar o buffer, ele ainda abre o arquivo de buffer na guia atual em vez de alternar para a guia existente? Há algo de errado?Vim
:help window
explica muito bem a confusão "tabs vs buffers".A abertura de vários arquivos é obtida no vim com buffers . Em outros editores (por exemplo, bloco de notas ++), isso é feito com guias, portanto a guia de nome no vim pode ser enganosa.
O Windows tem o objetivo de dividir a área de trabalho e exibir vários arquivos (buffers) juntos em uma tela. Em outros editores, isso pode ser conseguido abrindo várias janelas da GUI e reorganizando-as na área de trabalho.
Finalmente, nessa analogia, as páginas da guia vim corresponderiam a vários desktops, ou seja, diferentes rearranjos de janelas.
Como vim
help: tab-page
explica uma página da guia pode ser usado, quando se quer editar temporariamente um ficheiro, mas não quer mudar nada no layout atual de janelas e buffers. Nesse caso, outra ficha de registro pode ser usada apenas com a finalidade de editar esse arquivo específico.Obviamente, você deve se lembrar que exibir o mesmo arquivo em muitas guias ou janelas resultaria na exibição da mesma cópia de trabalho (buffer).
fonte
buffer
= objeto ,window
= painel etab
= janela . Eu posso me mover pela sala e olhar de diferentes janelas (tabs
). Janelas diferentes podem ter diferentes números, disposição e tamanho dos painéis . O mesmo objeto pode ser visualizado simultaneamente de painéis diferentes em janelas diferentes .vim
uso. No começo havia apenas uma janela . Os gerenciadores de janelas permitiram dividir as janelas em painéis (WM lado a lado) ou em painéis sobrepostos (WM flutuante), mas eles ainda se referiam a cada painel como uma janela. Agora adicione o conceito de uma área de trabalho em que o painel possa ser mostrado em várias áreas de trabalho. Portanto, neste paradigma,buffer
= app ,window
= window etab
= space .Ao contrário de algumas das outras respostas aqui, eu digo que você pode usar as guias da maneira que desejar. O vim foi projetado para ser versátil e personalizável, em vez de forçá-lo a trabalhar de acordo com parâmetros predefinidos. Todos sabemos como nós, programadores, adoramos impor nossa "ética" a todos os outros, portanto essa conquista é certamente uma característica principal.
<C-w>gf
é o equivalente da guia dogf
comando dos buffers .<C-PageUp>
e<C-PageDown>
alternará entre as guias. (No Byobu, esses dois comandos nunca funcionam para mim, mas funcionam fora do Byobu / tmux. As alternativas sãogt
egT
.) Moverão<C-w>T
a janela atual para uma nova página de guia.Se você preferir que o vim use uma guia existente, se possível, em vez de criar uma guia duplicada, adicione
:set switchbuf=usetab
ao seu arquivo .vimrc. Você pode adicionarnewtab
à lista (:set switchbuf=usetab,newtab
) para forçar os comandos do QuickFix que exibem erros de compilação para abrir em guias separadas. Eu prefirosplit
, em vez disso, que abre os erros de compilação em uma janela dividida.Se você tiver o suporte ao mouse ativado
:set mouse=a
, poderá interagir com as guias clicando nelas. Há também um+
botão por padrão que criará uma nova guia.Para a documentação das guias, digite
:help tab-page
no modo normal. (Depois de fazer isso, você pode praticar movendo uma janela para uma guia usando<C-w>T
.) Há uma longa lista de comandos. Alguns dos comandos da janela têm a ver com guias, portanto, você também pode consultar essa documentação:help windows
.Adição: 19-12-2013
Para abrir vários arquivos no vim com cada arquivo em uma guia separada, use
vim -p file1 file2 ...
. Se você é como eu e sempre se esquece de adicionar-p
, você pode adicioná-lo no final, pois o vim segue as regras normais de análise da opção de linha de comando. Como alternativa, você pode adicionar um mapeamento de alias do bashvim
paravim -p
.fonte
vim -p
entanto, lembre-se de que apenas até 10 guias serão exibidas por padrão. Arquivos extras são carregados nos buffers, mas não são exibidos em sua própria guia.tabpagemax
configuraçãoEu tive o mesmo problema. Eu queria que as guias funcionassem como buffers e nunca consegui consegui-las. A solução que eu finalmente decidi foi fazer com que os buffers se comportassem como guias!
Confira o plug-in chamado Mini Buffer Explorer , uma vez instalado e configurado, você poderá trabalhar com os buffers praticamente da mesma maneira que as guias, sem perder nenhuma funcionalidade.
fonte
Esta é uma resposta para aqueles que não estão familiarizados com o Vim e são de outros editores de texto (no meu caso, Sublime Text).
Eu li todas essas respostas e ainda não estava claro. Se você lê-los o suficiente, as coisas começam a fazer sentido, mas levei horas para ir e voltar entre as perguntas.
A primeira coisa é, como outros explicaram:
Páginas de guias , parecem muito com guias , funcionam como guias e se parecem muito com guias na maioria dos outros editores de GUI, mas não são. Eu acho que é um modelo mental ruim que foi construído no Vim, que infelizmente ofusca o poder extra que você tem em uma guia.
A primeira descrição que entendi foi da resposta do @ crenate é que eles são equivalentes a vários desktops. Quando visto a esse respeito, você teria apenas alguns desktops abertos, mas muitas janelas da GUI abertas em cada um.
Eu diria que eles são semelhantes em outros editores / navegadores:
Quando você os vê dessa maneira, percebe o poder deles que pode agrupar facilmente conjuntos de arquivos (buffers), por exemplo, seus arquivos CSS, HTML e JS em diferentes guias. O que é realmente incrível.
Outras descrições que acho confusas
Janela de exibição
Isso não faz sentido para mim. Uma viewport que, embora tenha um termo de dicionário definido , só ouvi falar das janelas do Vim no
:help window
documento. Viewport não é um termo que eu já ouvi sobre editores como Sublime Text, Visual Studio, Atom, Notepad ++. Na verdade, eu nunca tinha ouvido falar sobre isso no Vim até começar a tentar usar as guias.Se você visualizar as guias como várias áreas de trabalho, a referência a uma área de trabalho como uma única janela parecerá estranha.
Áreas de trabalho
Isso possivelmente faz mais sentido, a definição do dicionário é:
Portanto, é como um lugar onde você armazena um grupo de buffers.
Inicialmente, não soei como o conceito de espaço de trabalho do Sublime Text, que é uma lista de todos os arquivos que você abriu no seu projeto:
No entanto, pensando mais sobre isso, isso realmente concorda. Se você considera uma página da guia Vim como um projeto de Texto Sublime, parece estranho ter apenas um arquivo aberto em cada projeto e continuar alternando entre projetos. Por isso, o uso de uma guia para abrir apenas um arquivo é estranho.
Coleção de janelas
O
:help window
refere-se a páginas de guia desta forma. Além disso, várias outras respostas usam o mesmo conceito. No entanto, até você entender o que é uma janela do vim, isso não ajuda muito, como construir um castelo na areia.Como mencionei acima, uma janela vim é igual a uma viewport e silenciosamente explicada excelentemente neste artigo do linux.com :
Acho estranho que uma página de guia seja referida como uma coleção de janelas em vez de uma coleção de buffers. Mas acho que você pode ter duas guias separadas, cada uma com várias janelas, todas apontando para o mesmo buffer, pelo menos é o que entendi até agora.
fonte
Olhando para: abas de ajuda, não parece que o vim quer funcionar da maneira que você ...
Os buffers são compartilhados entre as guias, portanto, não parece possível bloquear um determinado buffer para aparecer apenas em uma determinada guia.
É uma boa ideia, no entanto.
Você provavelmente poderia obter o efeito desejado usando um terminal que suporta guias, como multi-gnome-terminal, e executando instâncias do vim em cada guia do terminal. Não é perfeito, embora ...
fonte
Você pode mapear comandos que normalmente manipulam buffers para manipular guias, como eu fiz com o gf no meu .vimrc:
Tenho certeza que você pode fazer o mesmo com [^
Eu não acho que o vim suporte isso para abas (ainda). Eu uso gt e gT para passar para as guias próxima e anterior, respectivamente. Você também pode usar Ngt, onde N é o número da guia. Uma irritação que tenho é que, por padrão, o número da guia não é exibido na linha da guia. Para corrigir isso, coloquei algumas funções no final do meu arquivo .vimrc (não colei aqui porque é longo e não foi formatado corretamente).
fonte
<c-w>gf
abrirá o nome do arquivo sob o cursor em uma nova abaEu uso buffers como guias, usando o plug- in BufExplorer e algumas macros:
Com o BufExplorer, você não tem uma barra de guias na parte superior, mas, por outro lado, economiza espaço na tela, além de poder ter um número infinito de arquivos / buffers abertos e a lista de buffers é pesquisável ...
fonte
Se você deseja que os buffers funcionem como guias, confira o plug-in tabline .
Isso usa uma única janela e adiciona uma linha na parte superior para simular as guias (apenas mostrando a lista de buffers). Isso surgiu há muito tempo, quando as guias eram suportadas apenas no GVim, mas não na linha de comando vim. Como ele está operando apenas com buffers, tudo se integra bem ao restante do vim.
fonte