为什么有些人在.gvimrc中使用'if has("gui_running")'?

Som*_*DOS 35 vim

我一直在阅读一些dotfiles(.vimrc .gvimrc)来学习一些巧妙的技巧,我遇到过这个:

if has("gui_running")
    set fuoptions=maxvert,maxhorz
    au GUIEnter * set fullscreen
endif
Run Code Online (Sandbox Code Playgroud)

如果这已经是.gvimrc(仅在加载gVim时加载)为什么它有条件if has("gui_running")?这不是多余的吗?是否存在特殊问题/原因?

我知道if has("gui_running")在脚本中使用它很有意思,我特别要求它在.gvimrc中的用途,因为它只是在我使用gvim时才获得,因此理论上并不需要.

nel*_*rom 52

OP链接到的gvimrc文件是我的,所以我最好拥有并承认它是没有充分理由的.

我在没有分心的情况下Hacking复制了该片段,建议将它放在你的vimrc中.然后在某些时候我意识到将它移动到gvimrc文件会更简洁,但是我没有清楚地认为它并且将if has('gui_running')检查留在了原位.你是正确的指出它是不必要的,所以我现在已经删除它.

为了后代,这是改变之前之后的我的gvimrc .


P S*_*ved 14

保留一个配置文件而不是两个配置文件更容易(特别是如果您在多台计算机上工作,并且需要保持其配置同步).因此,而不是创造.gvimrc .vimrc,有些人可能更愿意把它所有进入.vimrc的文件和使用警卫.

然后有人在互联网上共享这个文件,并且人们将GUI重新复制的部分复制到.gvimrc.这就是它最终的结果.


Fre*_*ihl 8

从vim-documentation,基本上它允许你根据正在运行的gui进行各种设置.

- To check in a Vim script if the GUI is being used, you can use something
  like this:

    if has("gui_running")
       echo "yes, we have a GUI"
    else
       echo "Boring old console"
    endif

                            *setting-guifont*
- When you use the same vimrc file on various systems, you can use something
  like this to set options specifically for each type of GUI:

    if has("gui_running")
        if has("gui_gtk2")
        :set guifont=Luxi\ Mono\ 12
        elseif has("x11")
        " Also for GTK 1
        :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-*
        elseif has("gui_win32")
        :set guifont=Luxi_Mono:h12:cANSI
        endif
    endif
Run Code Online (Sandbox Code Playgroud)

更新:

            *gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC*
The gvimrc file is where GUI-specific startup commands should be placed.  It
is always sourced after the |vimrc| file.  If you have one then the $MYGVIMRC
environment variable has its name.
Run Code Online (Sandbox Code Playgroud)

  • 另一个可行的答案可能是人们不知道初始化顺序,:帮助初始化,并且有些人习惯于将所有设置保存在.vimrc中(使用gui_running)并将其移动到.gvimrc时保留gui_running副本-糊... (3认同)