如何在VimScript中检测真实的操作系统?
我需要决定我需要选择哪个二进制可执行文件,所以我必须知道Vim运行的操作系统 我发现有一个相关的问题。但是如何在VimScript中检测真实的操作系统?,vim,vim-plugin,msys2,Vim,Vim Plugin,Msys2,我需要决定我需要选择哪个二进制可执行文件,所以我必须知道Vim运行的操作系统 我发现有一个相关的问题。但是has('win32')| | has('win64')解决方案对我不起作用,因为当我在Windows上使用msys2 Vim时,我将从has解决方案中获得0,因为has解决方案只告诉为哪个操作系统编译Vim,而不是告诉它正在哪个操作系统上运行 当我需要决定需要选择哪个二进制可执行文件时,我必须知道真正的操作系统。关于这个问题有什么好主意吗?来自: 定义包含当前环境名称的全局变量(如果尚未定
has('win32')| | has('win64')
解决方案对我不起作用,因为当我在Windows上使用msys2 Vim时,我将从has
解决方案中获得0
,因为has
解决方案只告诉为哪个操作系统编译Vim,而不是告诉它正在哪个操作系统上运行
当我需要决定需要选择哪个二进制可执行文件时,我必须知道真正的操作系统。关于这个问题有什么好主意吗?来自:
定义包含当前环境名称的全局变量(如果尚未定义)
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
诸如此类。没有答案,我也不知道,但在确定真正的操作系统后,你想运行什么可执行文件?@LievenKeersmaekers,比如LanguageClient neovim,它决定使用哪个可执行文件
has
现在:OP提到has('win32')| has('win64')解决方案对我不起作用?!这只是条件的前半部分,这将是错误的。第二部分将适用于他的案例。谢谢,我认为当我定义这个变量并自己使用它时,这个解决方案会很好地工作,但是如果我正在开发一个插件呢?按照你的想法,我想我必须定义一个全局变量作为配置选项,并告诉我的用户设置它,这似乎不是很聪明,因为操作系统应该是自动检测的…而且,如果我在.vimrc中将其定义为全局变量,那么我的.vimrc将无法在操作系统之间移植…而且,如果我在.vimrc中将其定义为一个全局变量,那么我的.vimrc将无法在操作系统之间移植。。。