Diferenciar duas guias no Vim


121

Cenário: Abri o Vim e colei algum texto. Abro uma segunda aba :tabee colo outro texto lá.

Objetivo: eu gostaria de uma terceira guia com uma saída equivalente a escrever os dois textos em arquivos e abri-los com vimdiff.

O mais próximo que posso encontrar é "diferenciar o buffer atual em relação a um arquivo", mas não diffdois buffers abertos mas não salvos.


1
qual é o comando tabe?
— 21139 hhafez

1
@hhafez - abrir um novo tampão em uma nova guia
— Rook

3
É a abreviação de: tabedit, também conhecido como: tabnew.
— TSomKes 08/07/2009

Respostas:


188

Sugiro abrir o segundo arquivo na mesma guia, em vez de um novo.

Aqui está o que eu costumo fazer:

:edit file1
:diffthis
:vnew
:edit file2
:diffthis

O :vnewcomando divide a exibição atual verticalmente para que você possa abrir o segundo arquivo lá. O comando :diffthis(ou abreviado :difft:) é então aplicado a cada visualização.


1
Por padrão, o MacVim não parece ter isso por padrão, mas acho que você deve poder ir ao terminal, digitar vimdiff file1.txt file2.txte se nocautear.
— ruffin

11
Você acabou de explodir minha mente. Minha vida nunca mais será a mesma depois :diffthis. Muito obrigado. Obrigado!
— Justin Force

3
Isso é impressionante. As edit fileNpartes podem ser substituídas apenas colando do buffer, o que permite diferenciar dois pedaços de texto sem colar cada um em um arquivo tmp (algo que o meld permite que você faça, mas faltam as ferramentas de visual diff no Mac). Funcionou no MacVim para mim imediatamente.
— yshavit

38

Sugiro tentar : diffthis ou : diffsplit


10
:vert diffsplitfaz para um diff-view mais tradicional do que sem:vert
— ephemient

7
Você pode: definir diffopt + = vertical para tornar: vert o padrão.
— graywh

3
Além disso, para rolar duas janelas simultaneamente: :set scrollbindem ambas.
— Dmytro Sirenko

Não funciona se eu tiver que abas, como solicitado na pergunta. Se eu :diffsplitreceber, dois buffers conectados.
— Erik

25

Quando você tiver dois arquivos abertos na divisão vertical, execute

:windo diffthis


8
use :diffoffpara desativar o modo diff
— AB

2
Mas como faço para mudar de duas guias para uma divisão vertical?
— Erik

1

O conteúdo de todas as guias está dentro dos buffers. Veja os buffers:

:buffers

Encontre o número certo para o conteúdo que deve ser diferente do conteúdo atual da guia.

Abra o buffer dentro de sua guia atual (fe buffer number 4)

:sb 4

Ou faça para a visualização vertical:

:vertical sb 4

Então você pode diferenciar o conteúdo com

:windo diffthis

Se você concluiu a análise diferencial, pode inserir:

:windo diffoff
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.