Como faço para diferenciar entre vim e vimdiff de dentro do vimrc?

10

Eu tenho uma função no vim que abrirá todos os buffers como guias. No entanto, depois de adicionar essa função, o vimdiff também abre os arquivos para serem comparados como guias diferentes e, portanto, não mostra as diferenças. Existe uma maneira de descobrir se o vim ou vimdiff está invocando meu arquivo vimrc?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction
Ankit Jain
fonte
Pós SO relacionadas a uso de guias de tampões: Usando guias do Vim como buffers
Peter Rincker
Encontrei essa pergunta porque não queria que o espaço de trabalho fosse carregado pelo vim-workspace quando o VIm foi executado, git difftoolmas, neste caso let g:workspace_session_disable_on_args = 1, me convém melhor.
Günter Zöchbauer 11/11/19

Respostas:

12

:help diff cobre isto:

No seu arquivo .vimrc, você poderia fazer algo especial quando o Vim foi iniciado no modo diff. Você pode usar uma construção como esta:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif
Rico
fonte
12

Você pode usar a &diffopção como no seu vimrc:

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

Vejo :h 'diff'

statox
fonte
Snap! Vou votar no seu se você votar no meu;)
Rich
Ahah, eu demorei 6 segundos para clicar em "enviar"! Have my upvote :)
statox
Obrigado pela rápida resposta! Querendo saber se existe uma opção para identificar view & vi também?
Ankit Jain
@AnkitJain Para a visualização, você pode verificar se todos os seus buffers têm a 'readonly'opção configurada, ou talvez você possa viewcriar um alias para definir uma variável vim que você verificaria na inicialização.
Statox
3
@AnkitJain:h v:progname
Christian Brabandt