Wie unterscheide ich innerhalb von vimrc zwischen vim und vimdiff?


10

Ich habe eine Funktion in vim, die alle Puffer als Registerkarten öffnet. Nachdem ich diese Funktion hinzugefügt habe, öffnet auch vimdiff die zu vergleichenden Dateien als verschiedene Registerkarten und zeigt daher die Unterschiede nicht an. Gibt es eine Möglichkeit, herauszufinden, ob es sich um vim oder vimdiff handelt, das meine vimrc-Datei aufruft?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction

In Verbindung stehender SO-Beitrag über die Verwendung von Registerkarten als Puffer: Verwenden von Vims Registerkarten als Puffer
Peter Rincker

Ich habe diese Frage gefunden, weil ich nicht wollte, dass der Arbeitsbereich von vim-workspace geladen wird, als VIm von ausgeführt wurde, git difftoolaber in diesem Fall let g:workspace_session_disable_on_args = 1passt es mir besser.
Günter Zöchbauer

Antworten:


12

:help diff deckt dies ab:

In Ihrer .vimrc-Datei können Sie etwas Besonderes tun, wenn Vim im Diff-Modus gestartet wurde. Sie könnten ein Konstrukt wie das folgende verwenden:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif

12

Sie können die &diffOption wie in Ihrem vimrc verwenden:

if &diff
    echo "in diff mode"
else
    echo "not in diff mode"
endif

Sehen :h 'diff'


Schnapp! Ich werde deine positiv bewerten, wenn du meine positiv bewertest;)
Rich

Ahah, ich war 6 Sekunden zu langsam, um auf "Senden" zu klicken! Habe meine Gegenstimme :)
statox

Danke für die schnelle Antwort! Sie fragen sich, ob es eine Option gibt, um view & vi auch zu identifizieren?
Ankit Jain

@AnkitJain Für die Ansicht können Sie überprüfen, ob für alle Ihre Puffer die 'readonly'Option festgelegt ist, oder Sie können einen Alias ​​verwenden view, um eine vim-Variable festzulegen, die Sie beim Start überprüfen würden.
Statox

3
@ AnkitJain:h v:progname
Christian Brabandt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.