我尝试在ubuntu上使用泛音,但我不能在Vim中评估一些泛音的代码 .
:Eval适用于clojure代码;我在vim(lein项目目录中的clj文件)中尝试过它,例如:(1 2 3)=>:Eval =>出现在vim窗口的底部=> 6,所以没关系 .
但是,例如,我试过:
(demo(sin-osc)) => :Eval ;(:Require don't change nothing)
它返回:
java.lang.RuntimeException: Unable to resolve symbol: demo in this context, comp
iling:(NO_SOURCE_PATH:1:1)
所以这就是我的工作:
-
jack已启动
li9 lein repl在lein项目中启动(deps是好的) -
在第一个有lein的终端我开始泛音(使用'overtone.live),这里是日志;我有2个错误:
user =>(使用'overtone.live) - >加载Overtone ... - >启动内部SuperCollider服务器... *** ERROR: dlsym load err '/home/axxon/workspace/overtone/tutorial/native/linux/x86_64/libscsynth.so: undefined symbol: load' Found 10 LADSPA plugins *** 错误:打开目录失败'/home/axxon/.local/share/SuperCollider/synthdefs' JackDriver:客户端名称为'SuperCollider' SC_AudioDriver:采样率= 44100,000000,驱动程序的块大小= 1024 - >连接到内部SuperCollider服务器... - > Build 连接JackDriver:最大输出延迟23,2 ms
-
这里,在这个窗口我尝试过(demo(sin-osc)) . 有用;我能听到 .
-
很好,但现在我想用Vim编写脚本,所以我在lein项目目录(/ overtone / tutorial)中创建了一个新文件(mytest.clj),我用Vim打开了它(在另一个窗口中)
-
在这个空白文件中,我写了与之前说过的相同的东西,(demo(sin-osc))并尝试先用eval,:Require,它返回了这个:
(clojure.core / require'user:reload)
java.io.FileNotFoundException: Could not locate user__init.class or user.clj on
classpath:
- 与Eval,它也不起作用 .
感谢您的帮助,因为我真的想用泛音!
Ps:我的vim包:
捆绑'guns/vim-clojure-static'
捆绑'tpope/vim-fireplace'
捆绑'tpope/vim-classpath'
编辑:我忘了使用正确的命名空间,在泛音的谷歌组中,我看到mytest.clj必须在项目的src目录中 . 我尝试了这个代码:Require(我在第一个窗口停止了泛音,我开始lein):
(ns tutorial.foo
(:use [overtone.live]))
(definst saw-wave [freq 440 attack 0.01 sustain 0.4 release 0.1 vol 0.4]
(* (env-gen (lin-env attack sustain release) 1 1 0 1 FREE) (saw freq) vol))
(saw-wave)
,但它返回:
(clojure.core/require 'tutorial.foo :reload)
Erreur détectée en traitant function <SNR>17_Require..fireplace#session_eval..<S
NR>17_eval..7 :
ligne 38 :
E605: Exception non interceptée : Error running Clojure: *** ERROR: open directo
ry failed '/usr/java/packages/lib/amd64'^@*** ERROR: dlsym load err '/usr/lib/jn
i/libswt-gtk-3836.so: undefined symbol: load'^@*** ERROR: dlsym load err '/usr/l
ib/jni/libswt-glx-gtk-3836.so: undefined symbol: load'^@*** ERROR: dlsym load er
r '/usr/lib/jni/libswt-webkit-gtk-3836.so: undefined symbol: load'^@*** ERROR: d
lsym load err '/usr/lib/jni/libswt-atk-gtk-3836.so: undefined symbol: load'^@***
ERROR: dlsym load err '/usr/lib/jni/libswt-pi-gtk-3836.so: undefined symbol: lo
ad'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-cairo-gtk-3836.so: undefined
symbol: load'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-awt-gtk-3836.so:
undefined symbol: load'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-gnome-gt
k-3836.so: undefined symbol: load'^@#^@# A fatal error has been detected by the
Java Runtime Environment:^@#^@# SIGSEGV (0xb) at pc=0x00007f5d261db671, pid=693
1, tid=140036632291072^@#^@# JRE version: 7.0_25-b30^@# Java VM: OpenJDK 64-Bi
2 回答
我遇到了同样的问题 . 事实证明,vim壁炉插件没有连接到我的bash repl会话 . 我手动 Build 了连接,之后一切正常 .
在lein会话的顶部,您应该看到有关正在运行repl会话的端口的详细信息
nREPL server started on port 35182 on host 127.0.0.1
那么你可以通过使用将vim-fireplace连接到该repl会话
:Connect nrepl://localhost:35182
即使vim-fireplace没有连接到远程repl会话,你仍然可以评估像
(+ 1 2 3)
这样的代码的原因是因为vim-classpath会使它回退到只生成一个新的clojure运行时实例来评估该代码 . 一旦壁炉repl连接正常工作,您应该注意到评估代码变得更快,因为它不需要从头开始加载clojure .确保在vim中编辑的文件的名称空间声明中使用overtone.live,并且REPL在单独的终端实例中运行 . 从vim中,保存文件(:w)并将光标移动到ns声明中 . 然后点击gf打开命名空间的文件 . 输入cpR或:要求!然后cpp或:Eval你试图运行的功能 . 希望这对你有用!祝你好运 .