2015-07-04 2 views
0

Я настроил slimv с помощью следующей команды в 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 с терминала работает правильно, потому что файл существует на указанном пути. Как я могу исправить эту проблему?

+1

Попробуйте полный путь с расширением тильды. –

+0

Это сработало. Почему бы сделать абсолютный путь абсолютным? – Jking

+2

@Jking Поскольку ни Vim, ни 'gnome-terminal', ни' sbcl' не расшифровывают '~' по умолчанию, это делает только оболочка. – lcd047

ответ

1

Вам нужно убедиться, что тильда расширяется. Расширение обеспечивается оболочкой.

Вы также можете вычислить путь в 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-pathnames и user-homedir-pathname) соответствуют стандарту ANSI CL.

Смежные вопросы