有时我使用Cygwin,有时候我使用Ubuntu。由于我的vimrc
中存在某些Ubuntu无法识别的内容,因此我创建了一个名为$ENV_TYPE
的shell变量,该变量在我的.profile
中手动设置以处理差异。
我的vimrc中有这样的东西:
if $ENV_TYPE == "cygwin"
<some_command_here>
endif
当我在Ubuntu的命令行上运行echo $ENV_TYPE
时,它会识别该变量。但是,在vim中,如果我运行相同的命令,它不会输出任何内容(这会阻止某些自定义命令无法识别)。
注意:这在Cygwin中根本不是问题。有想法该怎么解决这个吗?比使用手动设置的shell变量更好的方法也非常受欢迎。
答案 0 :(得分:2)
Cygwin已经为您公开了许多特定于Cygwin的环境变量,因此您不需要定义自己的环境变量。使用以下命令从shell中列出它们:
$ env
或者这个从Vim列出它们:
:!env
选择一个Cygwin特有的内容,如$OS
或$PROGRAMFILES
:
if $OS == 'Windows_NT'
" do cygwin stuff
endif
另一种选择可能是使用uname
的输出:
if substitute(system('uname'), '\n', '', '') =~ 'CYGWIN'
" do cygwin stuff
endif
这是一个“通用”代码段:
if !exists('g:os')
if has('win32') || has('win16')
let g:os = 'Windows'
else
let g:os = substitute(system('uname'), '\n', '', '')
endif
endif
你这样使用:
if g:os =~ 'Windows'
" do Windows stuff
endif
if g:os =~ 'CYGWIN'
" do Cygwin stuff
endif
if g:os =~ 'MINGW'
" do Git Bash stuff
endif
if g:os =~ 'Darwin'
" do Mac OS X stuff
endif
if g:os =~ 'Linux'
" do Linux stuff
endif