【问题标题】:Why am I getting a file not found error in Slimv?为什么我在 Slimv 中收到文件未找到错误?
【发布时间】:2015-09-22 01:17:08
【问题描述】:

我在 vim 中使用以下命令设置了 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 命令可以正常工作,因为该文件确实存在于指定的路径中。我该如何解决这个问题?

【问题讨论】:

  • 尝试扩展波形符的完整路径。
  • 那行得通。为什么将路径设为绝对路径?
  • @Jking 因为默认情况下 Vim、gnome-terminalsbcl 都不会扩展 ~,只有 shell 会这样做。

标签: vim common-lisp home-directory pathname slimv


【解决方案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 标准中。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2015-05-31
    • 2021-09-26
    相关资源
    最近更新 更多