【问题标题】:VIM: has('macunix') or has('mac') do not workVIM: has('macunix') 或 has('mac') 不起作用
【发布时间】:2012-04-13 20:18:47
【问题描述】:

我已经从使用 MacVim 转变为在我的 MacOs Lion 上的终端中使用 vim,并且我已经意识到这两者:

has('macunix')
has('mac')

返回 false 而不是 true(它们在 MacVim 中工作正常)。 这是一个问题,因为我在 Mac 和 Archlinux linode 上使用相同的 .vimrc,并且需要根据操作系统设置特定选项。

到目前为止,我能挖掘的唯一解决方案是使用 hostname() 函数来获取机器名称并将其映射到特定的操作系统上,但它不如能够检查操作系统本身那么优雅。

任何人都知道为什么 has('...') 命令不像文档中那样工作吗?

【问题讨论】:

  • 我猜这里发生的事情是您使用的是 OSX 附带的 vim,而不是 MacVim 附带的 vim 终端版本。我强烈建议您使用 MacVim 版本,因为它比 OSX 附带的版本更新并且编译的功能更多。你是如何安装 MacVim 的?
  • 你的意思是从终端调用 mvim 吗?这会打开 MacVim,我喜欢在 iterm2 中使用 vim,没有 gui。我还在 /Applications/MacVim.app/Contents/MacOS 中找到了一个“Vim”可执行文件,但它具有上述相同的问题。最后,我真的不记得我是如何安装 MacVim 的 :(
  • has('gui_macvim') 只会在 MacVim 上返回 1,无论 GUI 是否正在运行。
  • 我现在正在使用 MacVim 附带的 vim CLI,它可以正确识别 has('mac') 和 has('macunix')

标签: macos vim


【解决方案1】:

我同意 Randy Morris,使用 MacVim 捆绑的 CLI 可执行文件。

但是,这里有几行来自我的~/.vimrc

let os=substitute(system('uname'), '\n', '', '')
if os == 'Darwin' || os == 'Mac'
    set guifont=Inconsolata-dz:h12
    " more...
elseif os == 'Linux'
    set guifont=Inconsolata-dz\ Medium\ 10
    " more...
endif

在 Mac OS X 上,$ uname 在 X11/XQuartz 中返回 Darwin,否则返回 Mac

【讨论】:

  • 像魅力一样工作,谢谢。我仍在试图弄清楚如何调用 MacVim CLI 可执行文件(除非你的意思是调用 mvim,我更喜欢从没有 gui 的终端使用 vim)
  • 1.将随 MacVim 分发的 mvim 脚本放在您的 $PATH 中的某个位置。 2. 将alias vim="mvim -v" 添加到您的~/.bashrc 或您放置shell 配置的任何位置。 3. 打开一个新的终端窗口。 4.$ vim filename。 5. 胜利!
  • 我使用符号链接ln -s /path/to/mvim ~/bin/vim
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2022-12-05
  • 2022-12-17
  • 1970-01-01
相关资源
最近更新 更多