Bagaimana cara membedakan antara vim dan vimdiff dari dalam vimrc?

10

Saya memiliki fungsi di vim yang akan membuka semua buffer sebagai tab. Namun setelah saya menambahkan fungsi ini, vimdiff juga membuka file untuk dibandingkan sebagai tab yang berbeda dan karenanya tidak menunjukkan perbedaan. Apakah ada cara di mana saya bisa mengetahui apakah vim atau vimdiff yang memohon file vimrc saya?

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction
Ankit Jain
sumber
Posting SO terkait tentang menggunakan tab sebagai buffer: Menggunakan tab Vim seperti buffer
Peter Rincker
Saya menemukan pertanyaan ini karena saya tidak ingin ruang kerja dimuat oleh vim-workspace ketika VIm dieksekusi oleh git difftooltetapi dalam kasus ini let g:workspace_session_disable_on_args = 1cocok untuk saya lebih baik.
Günter Zöchbauer

Jawaban:

12

:help diff mencakup ini:

Dalam file .vimrc Anda, Anda dapat melakukan sesuatu yang istimewa ketika Vim dimulai dalam mode diff. Anda dapat menggunakan konstruk seperti ini:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif
Kaya
sumber
12

Anda dapat menggunakan &diffopsi seperti di vimrc Anda:

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

Lihat :h 'diff'

statox
sumber
Jepret! Saya akan mendukung Anda jika Anda memperbaiki milik saya;)
Rich
Ahah saya 6 detik terlalu lambat untuk mengklik "kirim"! Dapatkan upvote saya :)
statox
Terima kasih atas tanggapan cepatnya! Ingin tahu apakah ada opsi untuk mengidentifikasi tampilan & vi juga?
Ankit Jain
@AnkitJain Untuk tampilan Anda mungkin memeriksa apakah semua buffer Anda memiliki 'readonly'set opsi, atau mungkin Anda dapat viewmenetapkan variabel vim yang akan Anda periksa saat startup.
statox
3
@AnkitJain:h v:progname
Christian Brabandt