2010-03-24 5 views
7

ich mit Sachen wie „vimdiff mehrere“, „vimdiff git“, Vimdiff und Viewing differences with Vimdiff und tun verschiedene Google-Suchen gelesen haben usw.Wie erhalten Sie die bufspec Während vimdiff Durch Git Mit

„vimdiff Befehle“ Wenn mit do oder diffg bekomme ich den Fehler "Mehr als zwei Puffer im diff-Modus, weiß nicht, welchen zu verwenden".

Wenn diffg v: fname_in verwendet, bekomme ich "Kein passender Puffer für v: fname_in".

Von der vimdiff Dokumentation:

: [Bereich] diffg [et] [bufspec]
den aktuellen Puffer ändern Differenz mit einem anderen Puffer rückgängig zu machen. Wenn [bufspec] angegeben wird, wird dieser Puffer verwendet. Wenn [bufspec] auf den aktuellen Puffer verweist, passiert nichts. Ansonsten funktioniert das nur, wenn ein anderer Puffer im Modus diff existiert.

und mehr:

Wenn 'diffexpr' nicht leer ist, wertet Vim eine Diff-Datei im Format erwähnt zu erhalten. Diese Variablen werden auf den Dateinamen verwendet:

v: fname_in Originaldatei
v: fname_new neue Version der gleichen Datei
v: fname_out resultierende Diff-Datei

Also, ich brauche zu bekommen der Name von bufspec, aber die Standardvariablen (fname_in, fname_new und fname_out) sind nicht gesetzt.

Ich habe den Befehl git mergetool auf einer Linux-Box über ein Terminal ausgeführt.

[Bearbeiten] Eine Teillösung, die mehr Fragen ergab. Ich habe den "Dateinamen" am unteren Rand des Puffers verwendet. Es ist nur eine halbe Antwort, denn gelegentlich bekomme ich eine Datei, die nicht existiert. Ich glaube, es ist konsequent die Remote-Version der Datei, die "nicht existiert". Ich vermute, das hat etwas mit Git und Indizierung zu tun.

Wie erhalten Sie den bufspec-Wert konsistent bei der Verwendung von Vimdiff durch Git-Mergetool?

Antwort

8

Das obige Argument [bufspec] kann eine Puffernummer sein, ein Muster für einen Puffernamen oder einen Teil eines Puffernamens. Beispiele:

  • :diffget den anderen Puffer verwenden, die in diff Modus
  • :diffget 3 Nutzungspuffer 3
  • :diffget v2 Verwenden der Puffer, die v2 einstimmt und ist in diff-Modus (zB file.c.v2)

Ich verwende immer die Nummer des Puffers.

+0

Also verwenden: diffget und was ist die Zeichenkombination nach dem zweiten Punkt? –

+1

Das ist großartig. Man könnte meinen, das wäre leicht zu erraten. Ich schätze, ich war zu gereizt, etwas so Einfaches zu sehen. * seufz * Danke Danke! –

4

Geben Sie "2" ein, und dann Strg-G, zeigt Ihnen die Puffernummer und die Datei.

0

Um die verfügbaren Puffernummern und Namen (gültige Werte für bufspec) Liste, :ls

(Aus dem Titel dieser Frage verwenden, das ist, was ich dachte, verlangt wurde, und war, warum ich hier aussehen.)

:ls wird die Puffer Nummern und Namen auflisten.

:ls 
    1 #a "Gemfile.lock"     line 1 
    2 %a "Gemfile.lock.LOCAL.4828.lock" line 1 
    3 a "Gemfile.lock.BASE.4828.lock" line 0 
    4 a "Gemfile.lock.REMOTE.4828.lock" line 0 

Wenn diffget oder diffput verwenden, jede Teilkette übereinstimmt, die eindeutig ein Puffernamen als Argumentbufspec verwendet werden können: Das Fenster zur Zeit den Cursor enthält, wird durch eine % bezeichnet. Zum Beispiel, was sich in dem obigen Schnipsel den Zustand annimmt, können wir verwenden:

diffget REM

Gemfile.lock.REMOTE.4828.lock ‚s Version der Änderung zu ergreifen, die zur Zeit unter dem Cursor ist.

Verwandte Themen