Как мне различить 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 в качестве буферов
Питер Ринкер,
Я нашел этот вопрос, потому что я не хотел, чтобы рабочая область загружалась vim-workspace при запуске VIm, git difftoolно в этом случае let g:workspace_session_disable_on_args = 1мне подходит лучше.
Гюнтер Цохбауэр

Ответы:

12

:help diff охватывает это:

В вашем файле .vimrc вы можете сделать что-то особенное, когда Vim запускается в режиме сравнения. Вы можете использовать такую ​​конструкцию:

   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'

statox
источник
Щелчок! Я проголосую за вас, если вы проголосуете за меня;)
Рич
Ага, я был на 6 секунд медленнее, чтобы нажать «отправить»! У моего upvote :)
statox
Спасибо за быстрый ответ! Хотите знать, есть ли возможность идентифицировать view & vi тоже?
Анкит Джайн
@AnkitJain. Для просмотра вы можете проверить, есть ли у всех ваших буферов установленный 'readonly'параметр, или, возможно, вы можете использовать псевдоним viewдля установки переменной vim, которую вы будете проверять при запуске.
statox
3
@AnkitJain:h v:progname
Кристиан Брабандт,