我如何在vimrc中区分vim和vimdiff?


10

我在vim中有一个函数,它将打开所有缓冲区作为选项卡。但是,在添加此功能后,vimdiff也会将要比较的文件作为不同的选项卡打开,因此不会显示差异。有什么方法可以找出正在调用vimrc文件的vim还是vimdiff?

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

有关使用制表符作为缓冲区的相关SO帖子:使用Vim的制表符(例如缓冲区)
Peter Rincker

我发现了这个问题,因为我不希望在执行VIm时由vim-workspace加载工作区,git difftool但在这种情况下更let g:workspace_session_disable_on_args = 1适合我。
君特Zöchbauer

Answers:


12

:help diff 涵盖以下内容:

在.vimrc文件中,当以差异模式启动Vim时,可以做一些特殊的事情。您可以使用如下结构:

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

12

您可以&diff在vimrc中使用以下选项:

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

看到 :h 'diff'


快点!如果您支持我,我会支持您;)
Rich

啊,我慢了6秒,无法点击“提交”!祝我
投票愉快

感谢您的快速回复!想知道是否还有识别视图和vi的选项吗?
Ankit Jain

@AnkitJain对于该视图,您可以检查所有缓冲区是否都'readonly'设置了选项,或者可以使用别名view来设置将在启动时检查的vim变量。
statox

3
@AnkitJain:h v:progname
Christian Brabandt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.