Come faccio a distinguere tra vim e vimdiff dall'interno di vimrc?


10

Ho una funzione in vim che aprirà tutti i buffer come schede. Tuttavia, dopo aver aggiunto questa funzione, anche vimdiff apre i file da confrontare come schede diverse e quindi non mostra le differenze. C'è un modo in cui posso scoprire se il suo vim o vimdiff che sta invocando il mio file vimrc?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction

Articoli SO correlati sull'utilizzo delle schede come buffer: Utilizzo delle schede di Vim come buffer
Peter Rincker

Ho trovato questa domanda perché non volevo che lo spazio di lavoro fosse caricato da vim-workspace quando VIm è stato eseguito, git difftoolma in questo caso let g:workspace_session_disable_on_args = 1mi si adatta meglio.
Günter Zöchbauer,

Risposte:


12

:help diff copre questo:

Nel tuo file .vimrc potresti fare qualcosa di speciale quando Vim è stato avviato in modalità diff. Puoi usare un costrutto come questo:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif

12

Puoi usare l' &diffopzione come nel tuo vimrc:

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

Vedere :h 'diff'


Snap! Valuterò la tua se voterai la mia;)
Rich

Ah, ero 6 secondi troppo lento per fare clic su "Invia"! Ho il mio voto :)
statox

Grazie per la rapida risposta! Ti chiedi se esiste un'opzione per identificare view & vi?
Ankit Jain,

@AnkitJain Per la vista potresti verificare se tutti i tuoi buffer hanno l' 'readonly'opzione impostata, oppure puoi alias viewimpostare una variabile vim che verifichi all'avvio.
statox

3
@AnkitJain:h v:progname
Christian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.