我实际上是使用git bash而不是默认的windows命令shell(cmd)。
但我无法运行lein repl'在git bash中。
它没有显示任何内容,我必须按crtl + c重新获得控制权。
有什么建议吗? 谢谢。
- 编辑
我正在运行lein
而不是lein.bat
,因为我在.bashrc中添加了alias lein=lein.bat
,因此我认为这不是问题。
lein run
在Git Bash中正常工作,leiningen在windows cmd中工作正常。问题是明确lein repl
。
当我运行which lein
时,我得到which: no lein in ([MY-PATH-VAR])
答案 0 :(得分:1)
首先使用命令提示符中的以下命令检查是否已在Windows中安装了lein.bat 莱恩--version
然后如果lein可用,则在git bash中键入以下命令 别名lein ='lein.bat'
然后运行您的lein命令,它肯定可以工作...
答案 1 :(得分:1)
我遇到了与 ThomasH 完全相同的问题,从 Emacs shell 调用 lein repl
会得到介绍性消息和提示......
nREPL server started on port 55801 on host 127.0.0.1 - nrepl://127.0.0.1:55801
REPL-y 0.4.4, nREPL 0.8.3
Clojure 1.10.1
Java HotSpot(TM) 64-Bit Server VM 15.0.2+7-27
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
...但是当我试图让它做任何事情时似乎冻结,例如:
user=> (+ 1 2 3 8)
当我打开任务管理器时,我可以无缘无故地看到底层 Java 程序在大约 30% 的 CPU 上持续运行,而我能够可靠地摆脱它的唯一方法是从那里结束 Java 进程。< /p>
但是经过一番努力,我终于弄清楚发生这种情况的原因是shell环境变量TERM=emacs
。每当您调用 M-x shell
时,函数 comint-term-environment
都会为您放入。
(根据 comint.el
中的源代码,这样做是为了“让我们指定宽度”。它还提到“如果 TERM
不是有效的终端类型”。所以你知道了 - 看起来 Java 就是其中之一。)
要解决此问题,您可以在调用 system-uses-terminfo
之前将变量 't
设置为 M-x shell
。
(setq system-uses-terminfo t)
这样做之后,Java 现在终于可以响应了,我可以评估 repl 中的内容。
user=> (+ 1 2 3 8)
14
如果您遇到这个问题并且有幸在这里偶然发现,我希望这会有所帮助! =D
答案 2 :(得分:1)
以下内容对我有用,可以在 Windows 10 上的 Git bash 中运行它。当我最初使用它时,它冻结了,但是 this post 帮助我弄清楚了如何通过包含 winpty 来修复。
lein.bat
文件添加到 Path 变量,请执行步骤 1-3。否则,跳到 4. 在系统属性 -> 高级 -> 环境变量区域,选择 Path
变量lein.bat
的目录添加到此。我的是 C:\Program Files (x86)\lein
- lein.bat
存储在 lein
文件夹中cmd
)确认更新成功lein
。如果您还没有,它应该提示您运行安装命令。如果出现提示,请执行此操作,然后再次输入 lein
以确保其有效(应输出帮助菜单)alias repl='winpty lein.bat repl'
。你可以选择你想要的别名,我用了 repl
repl
(或您添加的任何别名)。应该花一点时间,然后开始 REPL 提示答案 3 :(得分:0)
使用GitBash作为终端,您可以安装lein script而不是lein.bat脚本。
lein script将在GitBash中正确运行(因为它实际上是Unix环境)。
我建议在您的用户帐户目录中的bin
目录中安装lein script,例如:
c:/Users/your-account/bin
将lein script放在bin
中将允许您在GitBash命令行的任何位置运行lein
命令。
假设您从GitBash终端运行Emacs,也可以从Emacs正确调用lein脚本,即。 runemacs
。将Emacs安装目录添加到您的用户帐户PATH
环境变量中,GitBash将在命令行中找到它。
在Windows上安装的Emacs在从GitBash终端运行时效果更好,因为您可以在Emacs中使用ediff
,这需要GitBash终端提供的diff
命令。
我建议的Windows安装Emacs
答案 4 :(得分:0)
我的经验是,lein repl
(并且我确实使用了lein bash脚本)可以正常启动,也可以将lein命令的启动消息打印到shell中,但是随后将停止输出任何内容(尽管进程可能运行正常),部分。不提供交互式提示(第一个除外),不回显用户输入(第一个除外),也不打印评估结果。当使用Ctrl-C终止该过程时,我的所有输入都将传递到底层shell(具有有趣的结果,例如$ (+ 3 4) bash: +: command not found
)。
我的解决方案是将Git CMD
用于交互式命令,例如lein repl
,lein figwheel
等,(不幸的是,看起来很不错)。在另一个终端仿真(Cmder)中运行Git sh
进程也为我提供了一个工作的交互式环境。