Como edito um buffer existente em uma nova aba no vim?

43

Suponha que eu comecei vim assim:

vim foo bar

Agora eu decido que quero cada um desses arquivos em sua própria guia. Existe uma maneira de fazer isso sem sair do vim e adicionar a opção -p à minha linha de comando?

    
por innaM 05.11.2009 / 15:33

6 respostas

24

Quando você inicia o vim dessa forma, não obtém um cliente vim, o editor de texto está usando o terminal ou prompt cmd - os dois arquivos estão em dois buffers diferentes. Use :ls para listar os buffers:

:ls
  1 %a   "foo"                 line 6
  2      "bar"             line 0

O% a é o buffer ativo. Você pode usar :b2 para alternar para o buffer 2 ou usar :bn para ir para o próximo ou :bp para o anterior. Eu prefiro (CTRL-W v) dividir janelas verticalmente, em vez de (CTRL-W s), que se divide horizontalmente.

Se você tiver 2 arquivos carregados & nenhuma guia (ainda), você pode, :tabnew e no novo tipo de guia :b2

Se você deseja sempre ter os buffers carregados em suas próprias guias, confira este artigo .

    
por 05.11.2009 / 16:54
42

Você deseja abrir um buffer em uma nova guia?

Divida a tela (Ctrl-W s), pegue uma janela e Ctrl-W T

    
por 05.11.2009 / 16:28
23

A melhor maneira de realizar o que o OP pediu é esta:

:bufdo tab split

Isso abrirá cada buffer em uma guia própria, independentemente de quantos houver. Se você usa muito isso, é fácil transformar em um mapeamento em seu .vimrc. Combinado com algo como este pequeno plugin vim , o seguinte irá abrir todos os itens de :grep (ou : Ack ) em uma guia própria:

:grep foo
:QuickFixOpenAll
:bufdo tab split

É claro que, ao recorrer a um plugin, seria bastante fácil modificá-lo para abrir o conteúdo da lista de correções rápidas diretamente nas abas.

UPDATE : Eu realmente tenho que dar um grito para o comentário de ggustafsson abaixo. É de longe a melhor resposta do lote e ilustra lindamente a tendência do Vim em relação ao comportamento composicional. A sugestão é:

 :tab sball

Vale a pena procurar a ajuda do Vim para a guia e : sball para ver o que está acontecendo aqui.

    
por 30.05.2012 / 03:30
17

Você pode fazer isso combinando o comando tab com o sb[uffer] .

Primeiro você precisa saber o id do buffer que você deseja abrir em uma nova aba. Você pode descobrir isso com o comando ls :

:ls
  1 %a   "foo"                          line 1
  2      "bar"                          line 0

Depois de ter o id, você pode abri-lo facilmente em uma nova guia usando:

:tab sb 2

O comando sb normalmente abre o buffer fornecido em uma nova janela dividida, mas o comando tab faz com que ele seja aberto em uma nova guia.

O comando tab também permite especificar onde, na lista de guias, a nova guia deve ser criada. Por exemplo, :0tab sb 2 resultaria na nova guia "barra" exibida no início da lista, em vez de depois da guia atual.

    
por 20.03.2015 / 19:33
6

1. Abra dois arquivos no Vim.

$ vim foo bar

2. Verifique os números de buffers.

:ls
  1%a "foo"
  2   "bar"

3. Faça uma cadeia de dois comandos: tabnew para abrir uma nova guia e b <buffer_number> para carregar o buffer desejado na guia.

:tabnew | b 2
    
por 05.02.2011 / 12:04
4

Basta adicionar um ponto que outros caras não mencionaram.

  • janela atual para nova guia

Se tiver várias janelas, <C-W>T moverá esta janela para nova guia. No entanto, este atalho apenas para "Window", não "buffer". Se preferir esse estilo, :sp ou <C-W>s para duplicar o buffer atual para mais uma janela, então <C-W>T para movê-lo para uma nova guia.

4 pressionamentos de teclas ou 7 pressionamentos de teclas.

  • buffer atual para nova guia

:tabe % para abrir uma nova guia para o buffer atual.

7 pressionamentos de teclas.

  • buffer para nova guia

Se usar o plugin CtrlP, também pode usar "CtrlPBuffer" e, em seguida, com o atalho <C-t> para abri-lo com a nova página de guia. Este estilo, facilmente para alternar para diferentes buffers.

Com o atalho "CtrlPBuffer", 4 pressionamentos de teclas ou mais.

    
por 11.06.2015 / 11:35

Tags