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.