如何使用Mac OS X上的clientserver
功能编译Vim?我有vim-7.3.tar.bz2 source
我知道MacVim内置了这个,但它只在GUI运行时才有效。我想使用CLI版本,因为我的工作使用CLI更容易(例如,我可以轻松切换到终端)。
我使用以下./configure
选项
./configure --enable-rubyinterp --enable-pythoninterp --with-features=huge
我看过这个question on Unix & Linux,但它只关注Ubuntu解决方案。此外,由于我启用了huge
功能集,根据vimdoc,我应该期待+clientserver
:
因此,如果某个功能标有" N",它将包含在Vim的普通版,大版和大版中。
服务器功能仅适用于GUI MacVim。重现这一点:
$ Applications/MacVim.app/Contents/MacOS/Vim --servername VIM
在另一个控制台中:
$ vim --serverlist # does not output anything
然而,如果我启动GUI MacVim,
$ vim --serverlist
VIM1
但我的要求是在CLI Vim中工作。
答案 0 :(得分:10)
您现在也可以使用HomeBrew执行此操作:
brew install vim --with-client-server
它看起来像this was added back in 2013,所以我不确定为什么不经常提及它。
如果您这样做是为了开始使用像我这样的Pterosaur,在使用HomeBrew安装vim之后,如果您通过HomeBrew使用MacVim,则可能必须强制使用符号链接。
brew link --overwrite macvim
然后,只需在Firefox extensions.pterosaur.vimbinary
页面中将/usr/local/bin/vim
设置为about:config
即可。我现在正在使用Pterosaur打字,虽然偶尔Python会崩溃。
答案 1 :(得分:7)
使用MacPorts:
$ sudo port install vim +huge +gtk2
在新窗口中:
$ /opt/local/bin/vim --servername FOO
在另一个窗口中:
$ /opt/local/bin/vim --serverlist
FOO
快速。容易。
修改强> 的
+gtk2
是必需的,+huge
是不够的。实际上,只要你有+gtk2
,我认为它应该在没有+x11
的情况下有效。不幸的是,我不再在我的Mac上,所以我不能尝试。整个过程大约需要3分钟,所以你可以尝试一下。
的 EndEdit中强> 的
答案 2 :(得分: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服务器必须正常运行。
答案 3 :(得分:2)
您可以运行MacVim中包含的vim
的CLI版本。将MacVim安装为/Applications/MacVim.app
,CLI版本为:
/Applications/MacVim.app/Contents/MacOS/Vim
这是使用clientserver
功能编译的。您可以为此添加符号链接,以将其添加到$PATH
。
答案 4 :(得分:2)
即使在阅读了所有这些答案之后,我也不得不花费几个小时来使事情有效,所以我想为像我这样的人提供一些明确的步骤。
鉴于几乎所有Mac用户都在使用Homebrew,我的解决方案是使用Homebrew进行安装。
brew cask install xquartz
brew install vim --with-client-server
现在,如果您启动vim,XQuartz也会启动。如果你使用--servername <name>
参数运行vim,你将能够使用--serverlist
选项查看服务器。
但是在此之后,你必须用vim启动XQuartz,你还需要做一些让剪贴板工作再次工作的工作。我找到了a blog post并跟着它,但未能使其在剪贴板上正常工作。
答案 5 :(得分:1)
您应该使用MacVim获取命令行可执行文件。