3

我正在使用 MacVim(一种用于 OSX 的 gvim)并尝试运行slimv插件。可悲的是,它不是开箱即用的。事实上,它根本没有启动。

我的设置:

  • MacVim(32位原因)(vim 7.3)
  • :scriptnames列出ftplugin/slimv.vimplugin/paredit.vim未列出
  • : 设置英尺?显示filetype=lisp.lisp 文件
  • :messages显示没有错误
  • :文件类型 filetype detection:ON plugin:ON indent:ON
  • :echo g:paredit_loaded 1
  • :echo g:slimv_loaded E121: Undefined variable: g:slimv_loaded \ E15: Invalid expression: g:slimv_loaded
  • 用 +python (2.7) 编译

已安装 SBCL 和 slime - 与 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 不工作,我不知道如何解决它。但是对 Linux 来说,对 xterm 的类似调用就足够了,所以我的 sh 调用应该没问题。好吧,我不知道下一步该尝试什么。:/

通过将 slimv 安装到 ~/.vim 而不是 MacVim 中嵌入的 vim解决了这个问题。也许某种错误?然而,Common Lisp + vim - 我就是喜欢它。

4

3 回答 3

2

因为移动 slimv 插件来~/.vim修复它,我怀疑问题是 MacVim 的默认值/Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin/lisp.vim是在ftplugin/lisp/slimv-lisp.vimslimv 提供的文件之前获取的。

这两个文件 (lisp.vimslimv-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.vimslimv-lisp.vim运行时都引用它,您可以看到它lisp.vim首先运行,这会阻止slimv-lisp.vim工作。

将您的 slimv 安装从/Applications/MacVim.app/目录移动到您的~/.vim目录将更改顺序,以便slimv-lisp.vim之前来源lisp.vim,然后 slimv 将工作。

于 2013-09-12T02:47:41.363 回答
2

如果 slimv.vim 未列出:scriptnames并且g:slimv_loaded未定义,那么您根本没有加载插件。我猜你没有启用文件类型插件。Paredit 是一个通用插件,但 slimv.vim 是一个文件类型插件,必须明确启用文件类型/缩进插件。尝试将这些行添加到您的.vimrc

filetype plugin on
filetype indent on
于 2012-04-02T06:49:01.413 回答
0

通过将 slimv 安装到 ~/.vim 而不是 MacVim 中嵌入的 vim 解决了这个问题。也许某种错误?然而,Common Lisp + vim - 我就是喜欢它。

于 2012-04-02T18:02:47.467 回答