Làm cách nào để phân biệt giữa vim và vimdiff từ bên trong vimrc?


10

Tôi có một chức năng trong vim sẽ mở tất cả các bộ đệm dưới dạng các tab. Tuy nhiên, sau khi tôi thêm chức năng này, vimdiff cũng mở các tệp để được so sánh dưới dạng các tab khác nhau và do đó không hiển thị sự khác biệt. Có cách nào để tôi có thể tìm hiểu xem vim hoặc vimdiff của nó đang gọi tập tin vimrc của tôi không?

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

Bài viết SO liên quan về việc sử dụng các tab làm bộ đệm: Sử dụng các tab của Vim như bộ đệm
Peter Rincker

Tôi tìm thấy câu hỏi này vì tôi không muốn không gian làm việc được tải bởi vim-workspace khi VIm được thực thi git difftoolnhưng trong trường hợp này let g:workspace_session_disable_on_args = 1phù hợp với tôi hơn.
Günter Zöchbauer

Câu trả lời:


12

:help diff bao gồm điều này:

Trong tệp .vimrc của bạn, bạn có thể làm điều gì đó đặc biệt khi Vim được khởi động ở chế độ khác. Bạn có thể sử dụng một cấu trúc như thế này:

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

12

Bạn có thể sử dụng &difftùy chọn như trong vimrc của mình:

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

Xem :h 'diff'


Chộp lấy! Tôi sẽ nâng cấp của bạn nếu bạn nâng cấp của tôi;)
Rich

Ahah tôi đã chậm 6 giây để bấm "gửi"! Có upvote của tôi :)
statox

Cảm ơn đã nhanh chóng! Tự hỏi nếu có một tùy chọn để xác định xem & vi quá?
Ankit Jain

@AnkitJain Đối với chế độ xem, bạn có thể kiểm tra xem tất cả các bộ đệm của mình có bộ 'readonly'tùy chọn hay không, hoặc có thể bạn có thể đặt bí danh viewđể đặt biến vim mà bạn sẽ kiểm tra khi khởi động.
statox

3
@AnkitJain:h v:progname
Christian Brabandt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.