¿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

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

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'


¡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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.