2015-07-04 76 views
0

我在vim建立slimv用下面的命令:为什么我在Slimv中找不到文件错误?

let g:slimv_swank_cmd = '!gnome-terminal -e "sbcl --load ~/.vim/bundle/slimv/slime/start-swank.lisp &"'

当打开.lisp文件和启动slimv,我收到在新打开的终端窗口中出现以下错误信息:

debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread 
#<THREAD "main thread" RUNNING {1002A8B203}>: 
    Couldn't load #P"~/.vim/bundle/slimv/slime/start-swank.lisp": file does not exist. 

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. 

restarts (invokable by number or by possibly-abbreviated name): 
    0: [CONTINUE] Ignore runtime option --load "~/.vim/bundle/slimv/slime/start-swank.lisp". 
    1: [ABORT ] Skip rest of --eval and --load options. 
    2:   Skip to toplevel READ/EVAL/PRINT loop. 
    3: [EXIT ] Exit SBCL (calling #'EXIT, killing the process). 

(LOAD #P"~/.vim/bundle/slimv/slime/start-swank.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT) 

但是,从终端运行sbcl命令可正常工作,因为文件确实存在于指定的路径中。我该如何解决这个问题?

+1

尝试扩大波浪形的完整路径。 –

+0

工作。为什么要让道路绝对做任何事情? – Jking

+2

@Jking默认情况下,因为Vim,'gnome-terminal'和'sbcl'都不会扩展'〜',所以只有shell可以。 – lcd047

回答

1

您需要确保代字号得到扩展。扩展由shell提供。

您还可以使用计算Common Lisp中的路径:

(merge-pathnames ".vim/bundle/slimv/slime/start-swank.lisp" 
       (user-homedir-pathname)) 

-> #P"/home/foobar/.vim/bundle/slimv/slime/start-swank.lisp" 

合并有绝对路径相对路径名,增加了像上面的目录。

这两种功能(merge-pathnamesuser-homedir-pathname)均符合ANSI CL标准。

相关问题