在Mac OS X上编译带有+clientserver功能的Vim 7.3

15
我如何在Mac OS X上编译带有clientserver功能的Vim?我已经获取了vim-7.3.tar.bz2源文件。我知道MacVim内置了此功能,但当GUI运行时才能工作。因为我可以轻松切换到终端,所以我希望使用CLI版本,这样我的工作会更加容易。我使用以下./configure选项编译了Vim 7.3。
./configure --enable-rubyinterp --enable-pythoninterp --with-features=huge

我查看了这个Unix & Linux上的问题,但它只涵盖了Ubuntu的解决方案。另外,由于我启用了huge特性集,根据vimdoc的说法,我应该期望有+clientserver

因此,如果一个特性被标记为“N”,它将包括在Vim的normal、big和huge版本中。

更新:

服务器特性仅适用于GUI MacVim。要复制此操作:

$ Applications/MacVim.app/Contents/MacOS/Vim --servername VIM

在另一个控制台中:

$ vim --serverlist # does not output anything

如果我启动图形界面的MacVim,

$ vim --serverlist
VIM1

但我的要求是在CLI Vim中工作。


“vim --version” 是否实际包含 “+clientserver”?另外,“which vim”的输出是什么? - Andrew Marshall
@AndrewMarshall,我的 vim 别名设置为编译后的 Vim 路径。--version 只有 -clientserver - Kit
由于我正在使用YCM,我想继续使用CLI macvim --- 有没有一种方法可以允许服务器在终端运行?谢谢。 - dragonxlwang
6个回答

11

现在你也可以使用HomeBrew来完成这个操作:

brew install vim --with-client-server

看起来这个功能在2013年就被添加了, 所以我不确定为什么没有更频繁地提到它。

如果你是想像我一样开始使用Pterosaur,在使用HomeBrew安装vim之后,如果你也是通过HomeBrew使用MacVim,可能需要强制创建符号链接。

brew link --overwrite macvim

然后,在Firefox的about:config页面中将extensions.pterosaur.vimbinary设置为/usr/local/bin/vim,然后它应该可以工作了。我现在正在使用Pterosaur输入这个,尽管有时Python会崩溃。


1
brew install macvim --with-client-server 对我有用,而不是vim。希望能帮到你。 - aemonge
可以在以下链接查看:https://github.com/Homebrew/homebrew-core/blob/80fdd1a8407b89b90602a0215f3712c9e6ca3aea/Formula/vim.rb#L21与Homebrew结合使用时,有各种可能的选项。 - Daniel
它在使用vim时运行良好,无需使用macvim。问题是安装后必须启动XQuartz一次。您还需要重新启动或注销/登录您的Mac。 - Sanghyun Lee
它说无效选项 :( - Nic Wanavit
错误:无效选项:--with-client-server - Nic Wanavit

9

使用MacPorts:

$ sudo port install vim +huge +gtk2

在一个新窗口中:
$ /opt/local/bin/vim --servername FOO

同时在另一个窗口中:

$ /opt/local/bin/vim --serverlist
FOO

快速,简便。

编辑

使用+gtk2可以使其正常工作,而+huge则不足以满足需求。实际上,我认为只要有+x11就应该可以运行。不幸的是,我现在不在我的Mac上,所以无法尝试。整个过程大约需要3分钟,因此您可以尝试一下。

结束编辑


+巨大的+x11对我很有帮助。我不需要gtk2。 - Leif Carlsen

4

我通过添加 --enable-gui=gtk2 成功使其工作。

./configure --enable-rubyinterp --enable-pythoninterp --with-features=huge --enable-gui=gtk2

然后从控制台运行:

$ vim --servername FOOBAR_SERVER

从另一个控制台:

$ vim --serverlist
FOOBAR_SERVER

或者在任何一个Vim实例内:

:echo serverlist()
FOOBAR_SERVER

请注意,X11.app也会启动,因为它是Vim服务器必须要使用的。

完整的配置路径是什么?我看到你只列出了./configure。我遇到了完全相同的问题。 - bigtunacan
@bigtunacan,非常抱歉回复晚了。每当您想从源tarball编译时,configure脚本通常位于src的父级目录中。换句话说,它与src处于同一级别。 - Kit

3
你可以直接运行MacVim中包含的CLI版本的vim。假设你已经安装了MacVim并将其放置在/Applications/MacVim.app,CLI版本的vim如下所示:
/Applications/MacVim.app/Contents/MacOS/Vim

这是使用clientserver功能编译的。您可以添加符号链接以将其放入$PATH中。


2
我在问题详情中提到服务器只能与GUI一起使用。在MacVim的注意事项中也提到了这一点,您可以在:help remote中找到相关信息。 - Kit

2
即使阅读了所有这些答案,我还是花了几个小时才使它正常工作,所以我想为像我一样的人提供一些清晰的步骤。
考虑到几乎所有的Mac用户都在使用Homebrew,我的解决方案是使用Homebrew进行安装。
1.运行命令brew cask install xquartz 2.启动XQuartz。您可能需要更新它。 3.注销并登录,或重新启动您的Mac。 4.运行命令brew install vim --with-client-server 现在,如果您启动vim,XQuartz也将被启动。如果您使用--servername <name>参数运行vim,则可以使用--serverlist选项查看服务器。
但在此之后,您必须使用vim启动XQuartz,并且还必须做一些工作以使剪贴板正常工作。我发现了一篇博客文章,并按照其中的步骤操作,但无法正确地使剪贴板正常工作。

1

2
简单地链接到另一个问题表明您应该投票将其关闭为重复,而不是发布答案。那个问题也无法回答这个问题。 - Andrew Marshall
1
我的意思是,如果你想要一个CLI版本,那么你可以使用预编译的MacVim来得到它。这难道不是你所需要的吗? - Rory Hunter
这个问题怎么回答呢?mvim不是CLI Vim,而是一个打开GVim的脚本。非常不同。 - Andrew Marshall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接