我正在使用MacVim(一种用于OSX的gvim)并尝试运行slimv插件。 可悲的是,它没有开箱即用。事实上,它根本没有启动。
我的设置:
ftplugin/slimv.vim
时未列出plugin/paredit.vim
filetype=lisp
filetype detection:ON plugin:ON indent:ON
1
E121: Undefined variable: g:slimv_loaded \ E15: Invalid expression: g:slimv_loaded
安装了SBCL和粘液 - 与emacs完美配合。
我在.vimrc中使用和不使用let g:slimv_swank_cmd = ...
进行了尝试,并更改了插件页面上推荐的行
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" &'
由于osascript无效,我不知道如何修复它。但是对xterm的类似调用对Linux来说已经足够了,所以我的sh调用应该没问题。
好吧,我不知道下一步该尝试什么。 :/
问题解决了,将slimv安装到〜/ .vim而不是MacVim中的vim。也许某种bug?但是,Common Lisp + vim - 我只是喜欢它。
答案 0 :(得分:2)
如果:scriptnames
中未列出slimv.vim且未定义g:slimv_loaded
,则根本没有加载插件。我猜你没有启用文件类型插件。 Paredit是一个通用插件,但slimv.vim是一个文件类型插件,必须明确启用filetype / indent插件。尝试将这些行添加到.vimrc
:
filetype plugin on
filetype indent on
答案 1 :(得分:2)
因为将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检测到之前运行了另一个* lisp * .vim脚本并因此设置了{finish
(退出脚本)缓冲区局部变量。
您可以通过使用参数:
从命令行运行MacVim来判断这种情况b:did_ftplugin
然后退出启动的MacVim会话,查看它创建的macvim-log.txt文件。
搜索-V20macvim-log.txt hello.lisp
,每次b:did_ftplugin
或lisp.vim
运行时都会看到它被引用,您可以看到slimv-lisp.vim
先运行,这会阻止{{1}来自工作。
将您的slimv安装从lisp.vim
目录移至slimv-lisp.vim
目录会更改顺序,以便在/Applications/MacVim.app/
之前找到~/.vim
,然后slimv将起作用。< / p>
答案 2 :(得分:0)
通过将slimv安装到〜/ .vim而不是MacVim中嵌入的vim来解决问题。也许某种bug? 但是,Common Lisp + vim - 我只是喜欢它。