Як мені відрізняти vim від vimdiff від vimrc?


10

У мене є функція vim, яка відкриє всі буфери як вкладки. Однак після того, як я додаю цю функцію, vimdiff також відкриває файли для порівняння як різні вкладки, а отже, не показує відмінностей. Чи є спосіб, коли я можу дізнатися, чи є його vim чи vimdiff, який викликає мій файл vimrc?

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

Пов’язана публікація
ТА

Я знайшов це питання, тому що я не хотів, щоб робоча область, завантажена vim-workspace, коли виконувалася VIm, git difftoolале в цьому випадку let g:workspace_session_disable_on_args = 1мені більше підходить.
Günter Zöchbauer

Відповіді:


12

:help diff охоплює це:

У вашому .vimrc-файлі ви можете зробити щось особливе, коли Vim був запущений в режимі diff. Ви можете використовувати таку конструкцію:

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

12

Ви можете скористатися такою &diffопцією, як у своєму vimrc:

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

Подивитися :h 'diff'


Оснастка! Я буду порушувати ваше, якщо ви порушите мою;)
Багатий

Ага, я був 6 секунд занадто повільним, щоб натиснути "подати"! Запросити мою заяву :)
statox

Дякую за швидку відповідь! Цікаво, чи є можливість ідентифікувати view & vi?
Анкіт Джайн

@AnkitJain Для перегляду ви можете перевірити, чи всі ваші буфери мають встановлений 'readonly'параметр, або, можливо, ви можете viewвстановити псевдонім, щоб встановити змінну vim, яку ви перевірите при запуску.
statox

3
@AnkitJain:h v:progname
Крістіан Брабандт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.