我正在使用MacVim (类似于OSX的gvim ),并尝试运行瘦身插件。遗憾的是它没能从盒子里出来。事实上,它根本没有启动。
我的设置:
ftplugin/slimv.vim,而plugin/paredit.vim则列出filetype=lispfiletype detection:ON plugin:ON indent:ON1E121: Undefined variable: g:slimv_loaded \ E15: Invalid expression: g:slimv_loadedSBCL和黏液被安装我尝试过在.vimrc中使用和不使用.vimrc,并将插件页面上推荐的行从
let g:slimv_swank_cmd = '!osascript -e "tell application \"Terminal\" to do script \"sbcl --load ~/.vim/slime/start-swank.lisp\""' 至
let g:slimv_swank_cmd = '!sh -c "sbcl --load /Applications/MacVim.app/Contents/Resources/vim/runtime/slime/start-swank.lisp" &'因为抄本不管用,我也不知道怎么修。但是,对xterm的类似调用对于Linux来说已经足够了,所以我的sh调用应该是可以的。我不知道接下来该做什么。:/
通过将slimv安装到~/.vim来解决问题,而不是安装在MacVim中的vim。也许是某种虫子?但是,Common + vim -我只是喜欢它。
发布于 2013-09-12 02:47:41
因为将slimv插件迁移到~/.vim修复了它,我怀疑问题在于MacVim的默认/Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin/lisp.vim是在slimv提供的ftplugin/lisp/slimv-lisp.vim文件之前提供的。
这两个文件(lisp.vim和slimv-lisp.vim)都以如下代码开头:
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1因此,无论哪个文件首先获得源,都将阻止另一个文件运行,因为vim执行finish (退出脚本),如果它检测到先前运行了另一个*lisp*.vim脚本,并因此设置了b:did_ftplugin缓冲区-局部变量。
您可以通过在带有参数的命令行中运行MacVim来判断这一点:
-V20macvim-log.txt hello.lisp然后退出启动的MacVim会话,查看它创建的macvim-log.txt文件。
搜索b:did_ftplugin,您将看到每次运行lisp.vim或slimv-lisp.vim时都会引用它,您可以看到lisp.vim首先运行,这阻止了slimv-lisp.vim的工作。
将您的slimv安装从/Applications/MacVim.app/ dir移动到您的~/.vim dir将更改订单,以便slimv-lisp.vim在lisp.vim之前获得,然后slimv就能工作了。
发布于 2012-04-02 06:49:01
如果slimv.vim没有在:scriptnames中列出,并且g:slimv_loaded是未定义的,那么您根本就没有加载插件。我想你还没有启用文件类型插件。Paredit是一个通用插件,但是slimv.vim是一个文件型插件,必须显式地启用文件类型/缩进插件。尝试将这些行添加到.vimrc中
filetype plugin on
filetype indent on发布于 2012-04-02 18:02:47
通过将slimv安装到~/.vim,而不是安装在MacVim中的vim,解决了这个问题。也许是某种虫子?但是,Common + vim -我只是喜欢它。
https://stackoverflow.com/questions/9968408
复制相似问题