gpt4 book ai didi

macos - 如何在 .vimrc 文件中检测 OS X,以便某些配置仅适用于 OS X?

转载 作者:行者123 更新时间:2023-12-03 06:04:16 25 4
gpt4 key购买 nike

我在我的笔记本电脑 (OS X) 和几台服务器(Solaris 和 Linux)上使用我的 .vimrc 文件,并且假设有一天可以在 Windows 机器上使用它。我通常知道如何检测 UNIX 和 Windows,但如何检测 OS X? (就此而言,有没有办法区分 Linux 和 Solaris 等。是否有一个列表,列出了“has”可以采用的所有字符串?我的 Google-fu 没有出现任何结果。)

例如,我会使用这样的东西:

if has("mac")
" open a file in TextMate from vi: "
nmap mate :w<CR>:!mate %<CR>
elseif has("unix")
" do stuff under linux and "
elseif has("win32")
" do stuff under windows "
endif

但显然“mac”不是正确的字符串,我尝试过的其他字符串也不是。

<小时/>

更新:下面的答案(“macunix”)看起来相当清楚它应该工作,但由于某种原因它不起作用。 (也许 Apple 没有正确编译 vim 来应对此问题?似乎不太可能。)

无论如何,我想我需要转移问题的焦点:是否有人有可以达到相同目的的解决方案? (即成功检测到 .vimrc 文件正在 Mac OS X 上使用。)

最佳答案

我更新的 .vimrc 现在使用以下内容:

if has("gui_running")
" Gvim
if has("gui_gtk2") || has("gui_gtk3")
" Linux GUI
elseif has("gui_win32")
" Win32/64 GVim
elseif has("gui_macvim")
" MacVim
else
echo "Unknown GUI system!!!!"
endif
else
" Terminal vim
endif

我的原始答案如下

<小时/>

你可以尝试我在 .vimrc 中所做的事情:

if has("unix")
let s:uname = system("uname -s")
if s:uname == "Darwin"
" Do Mac stuff here
endif
endif

尽管如此,为了完全透明,我的实际 .vimrc 内容如下:

let s:uname = system("echo -n \"$(uname)\"")
if !v:shell_error && s:uname == "Linux"

主要用于检测Linux(而不是OSX)

我不确定您是否绝对必须执行 echo -n\"$(uname)\" 操作,但它与 末尾的换行符有关>uname 调用。您的里程可能会有所不同。

关于macos - 如何在 .vimrc 文件中检测 OS X,以便某些配置仅适用于 OS X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com