MacVim:slimv无法启动
我正在使用MacVim(OSX的一种gvim)并尝试运行插件。 可悲的是,它不是开箱即用的。事实上,它根本没有启动 我的设置: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(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)编译
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