如何在VimScript中检测REAL操作系统?

时间:2018-07-27 03:45:18

标签: vim vim-plugin msys2

我需要确定我需要选择哪个二进制可执行文件,因此我必须知道运行Vim的操作系统。

我发现有一个相关的问题here。但是has('win32') || has('win64')解决方案对我不起作用,因为当我在Windows上使用msys2 Vim时,我将从0解决方案中得到has,因为has该解决方案仅告诉操作系统为哪个vim编译,而不是告诉其正在运行的实际OS。

当我需要确定需要选择的二进制可执行文件时,我必须知道真正的操作系统。关于这个问题有什么好主意吗?

1 个答案:

答案 0 :(得分:2)

来自this Gist

定义一个尚未包含当前环境名称的全局变量。

if !exists('g:env')
    if has('win64') || has('win32') || has('win16')
        let g:env = 'WINDOWS'
    else
        let g:env = toupper(substitute(system('uname'), '\n', '', ''))
    endif
endif

使用该全局变量...

if g:env =~ 'DARWIN'
    " ... to do Mac OS X-specific stuff.
endif

if g:env =~ 'LINUX'
    " ... to do Linux-specific stuff.
endif

if g:env =~ 'WINDOWS'
    " ... to do Windows-specific stuff.
endif

if g:env =~ 'CYGWIN'
    " ... to do Cygwin-specific stuff.
endif

if g:env =~ 'MINGW'
    " ... to do MinGW-specific stuff (Git Bash, mainly).
endif

以此类推。