Comment différencier vim et vimdiff de l'intérieur de vimrc?

10

J'ai une fonction dans vim qui ouvrira tous les tampons sous forme d'onglets. Cependant, après avoir ajouté cette fonction, vimdiff ouvre également les fichiers à comparer sous différents onglets et n'affiche donc pas les différences. Existe-t-il un moyen de savoir si son vim ou vimdiff qui appelle mon fichier vimrc?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction
Ankit Jain
la source
Article SO associé sur l'utilisation des onglets comme tampons: Utilisation des onglets de Vim comme des tampons
Peter Rincker
J'ai trouvé cette question parce que je ne voulais pas que l'espace de travail soit chargé par vim-workspace lorsque VIm a été exécuté par git difftoolmais dans ce cas let g:workspace_session_disable_on_args = 1me convient mieux.
Günter Zöchbauer

Réponses:

12

:help diff couvre ceci:

Dans votre fichier .vimrc, vous pourriez faire quelque chose de spécial lorsque Vim a été démarré en mode diff. Vous pouvez utiliser une construction comme celle-ci:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif
Riches
la source
12

Vous pouvez utiliser l' &diffoption comme dans votre vimrc:

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

Voir :h 'diff'

statox
la source
Casser! Je voterai pour le vôtre si vous votez pour le mien;)
Rich
Ahah j'étais 6 secondes trop lent pour cliquer sur "soumettre"! Ayez mon vote positif :)
statox
Merci pour la réponse rapide! Vous vous demandez s'il existe une option pour identifier également view & vi?
Ankit Jain
@AnkitJain Pour la vue, vous pouvez vérifier si tous vos tampons ont l' 'readonly'option définie, ou vous pouvez peut-être un alias viewpour définir une variable vim que vous vérifieriez au démarrage.
statox
3
@AnkitJain:h v:progname
Christian Brabandt