¿Cómo puedo diferenciar entre vim y vimdiff desde vimrc?

10

Tengo una función en vim que abrirá todos los búferes como pestañas. Sin embargo, después de agregar esta función, vimdiff también abre los archivos para compararlos con diferentes pestañas y, por lo tanto, no muestra las diferencias. ¿Hay alguna manera de averiguar si es vim o vimdiff el que invoca mi archivo vimrc?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction
Ankit Jain
fuente
Publicación SO relacionada sobre el uso de pestañas como buffers: Uso de las pestañas de Vim como buffers
Peter Rincker
Encontré esta pregunta porque no quería que vim-workspace cargara el espacio de trabajo cuando VIm fue ejecutado por, git difftoolpero en este caso let g:workspace_session_disable_on_args = 1me conviene mejor.
Günter Zöchbauer

Respuestas:

12

:help diff cubre esto:

En su archivo .vimrc podría hacer algo especial cuando Vim se inició en modo diff. Podrías usar una construcción como esta:

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

Puede usar la &diffopción como en su vimrc:

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

Ver :h 'diff'

statox
fuente
¡Chasquido! Voy a votar el tuyo si votaste al mío;)
Rich
Ahah ¡Fui 6 segundos demasiado lento para hacer clic en "enviar"! Have my upvote :)
statox
Gracias por el rápido respone! ¿Se pregunta si hay una opción para identificar view & vi también?
Ankit Jain
@AnkitJain Para la vista, puede verificar si todos sus búferes tienen la 'readonly'opción establecida, o tal vez puede usar un alias viewpara establecer una variable vim que verificaría en el inicio.
statox
3
@AnkitJain:h v:progname
Christian Brabandt