MacVim:slimv无法启动

MacVim:slimv无法启动,vim,lisp,macvim,slime,slimv,Vim,Lisp,Macvim,Slime,Slimv,我正在使用MacVim(OSX的一种gvim)并尝试运行插件。 可悲的是,它不是开箱即用的。事实上,它根本没有启动 我的设置: MacVim(32位)(vim 7.3) :scriptnames未列出ftplugin/slimv.vim,但列出了plugin/paredit.vim :设置ft?显示.lisp文件的filetype=lisp :消息不显示错误 :文件类型文件类型检测:在插件上:在缩进上:在 :echo g:paredit\u已加载1 :echo g:slimv\u loaded

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

我的设置:

  • MacVim(32位)(vim 7.3)
  • :scriptnames未列出
    ftplugin/slimv.vim
    ,但列出了
    plugin/paredit.vim
  • :设置ft?显示.lisp文件的
    filetype=lisp
  • :消息不显示错误
  • :文件类型
    文件类型检测:在插件上:在缩进上:在
  • :echo g:paredit\u已加载
    1
  • :echo g:slimv\u loaded
    E121:未定义变量:g:slimv\u loaded\E15:无效表达式:g:slimv\u loaded
  • 使用+python(2.7)编译
SBCL和slime已安装-与emacs完美配合。 我在.vimrc中使用和不使用
let g:slimv\u swank\u cmd=…
进行了尝试,并将插件页面上推荐的行从

let g:slimv_swank_cmd = '!osascript -e "tell application \"Terminal\" to do script \"sbcl --load ~/.vim/slime/start-swank.lisp\""' 

因为osascript不起作用,我不知道如何修复它。但是对xterm的类似调用对于Linux来说已经足够了,所以我的sh调用应该可以。 嗯,我不知道下一步该怎么办/


通过将slimv安装到~/.vim而不是安装在MacVim中的vim,问题得到了解决。也许是某种虫子?但是,Common Lisp+vim-我很喜欢它。

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

filetype plugin on
filetype indent on

通过将slimv安装到~/.vim而不是安装在MacVim中的vim,问题得以解决。也许是某种虫子?
然而,普通的Lisp+vim-我只是喜欢它。

因为将slimv插件移动到
~/.vim
修复了它,我怀疑问题在于MacVim的默认
/Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin/Lisp.vim
是在slimv提供的
ftplugin/Lisp/slimv.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脚本以前运行过,并因此设置了
b:didftplugin
缓冲区局部变量,则无论哪个文件首先获取源代码,都将阻止另一个文件运行,因为vim确实完成了
(退出脚本)

通过在命令行中使用以下参数运行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/
目录移动到
~/.vim
目录将更改顺序,以便
slimv-lisp.vim
lisp.vim
之前获得,然后slimv将工作。

如果我在设置slimv时没有记错,vim不能成为低级lisp的父进程。Emacs有子进程的概念,但VIM没有。因此,您需要从其他地方启动LISP实例。这就是为什么默认设置有一个
osascript
命令——它会打开一个拥有LISP会话的新终端窗口。使用默认命令不会打开终端(什么都不会发生),甚至手动启动进程也没有帮助。在我的
.vimrc
文件中,我有
g:slimv\u swank\u cmd=“!osascript-e'tell application\”Terminal \“to do script\”/sw/opt/sbcl-1.0.47/bin/sbcl--load~/.vim/slime/start swank.lisp \“”
--您必须告诉Terminal运行脚本,而不是像第一行所示的MacVIM。或者,先在终端窗口中运行
sbcl--load…/start swank.lisp
命令,然后启动slimv。它应该能够连接到已经运行的实例,而不是启动自己的实例。osascript本身正在工作,您是对的。我替换了我的方法。这两种方法都添加到了我的.vimrc中,但没有成功。然而,通过将插件安装到~/.vim而不是MacVim的嵌入式vim,问题得到了解决。尽管如此,谢谢
-V20macvim-log.txt hello.lisp