Jak odróżnić vim od vimdiff od vimrc?


10

Mam funkcję w vimie, która otworzy wszystkie bufory jako tabulatory. Jednak po dodaniu tej funkcji vimdiff również otwiera pliki do porównania jako różne zakładki, a zatem nie pokazuje różnic. Czy istnieje sposób, w jaki mogę sprawdzić, czy jego vim lub vimdiff wywołuje mój plik vimrc?

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

Powiązany wpis SO o używaniu zakładek jako buforów: Używanie zakładek Vima jak buforów
Peter Rincker

Znalazłem to pytanie, ponieważ nie chciałem, aby obszar roboczy był ładowany przez vim-workspace podczas wykonywania VIm, git difftoolale w tym przypadku let g:workspace_session_disable_on_args = 1bardziej mi odpowiada.
Günter Zöchbauer,

Odpowiedzi:


12

:help diff obejmuje to:

W swoim pliku .vimrc możesz zrobić coś specjalnego, gdy Vim był uruchamiany w trybie różnicowym. Możesz użyć takiej konstrukcji:

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

12

Możesz użyć &diffopcji jak w vimrc:

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

Widzieć :h 'diff'


Kłapnięcie! Będę głosować za pańskim, jeśli głosujecie za moim;)
Rich

Achah, byłem 6 sekund za wolny, żeby kliknąć „prześlij”! Pozdrawiam :)
statox

Dzięki za szybką odpowiedź! Zastanawiasz się, czy istnieje również opcja identyfikacji widoku i vi?
Ankit Jain

@AnkitJain W widoku możesz sprawdzić, czy wszystkie Twoje bufory mają 'readonly'ustawioną opcję, lub może możesz użyć aliasu, viewaby ustawić zmienną vim, którą sprawdzasz przy uruchamianiu.
statox

3
@AnkitJain:h v:progname
Christian Brabandt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.