我正在探索使用Scala REPL桥接shell。它主要是通过import sys.process._
包来实现的,我可以"ls" !
用来执行shell。
现在,我想用"vi" !
vi来打开一个交互式编辑器,真的很疯狂但是很刺激。在 REPL 中输入 cmd 后,终端打开一个 init vi 画布。不幸的是,终端没有从我的键盘读取任何输入。
是否可以在 REPL 中打开 vi ?
我正在探索使用Scala REPL桥接shell。它主要是通过import sys.process._
包来实现的,我可以"ls" !
用来执行shell。
现在,我想用"vi" !
vi来打开一个交互式编辑器,真的很疯狂但是很刺激。在 REPL 中输入 cmd 后,终端打开一个 init vi 画布。不幸的是,终端没有从我的键盘读取任何输入。
是否可以在 REPL 中打开 vi ?
来自https://stackoverflow.com/a/29972867/1573825(java解决方案):
import java.lang.{Process, ProcessBuilder}
System.out.println("STARTING VI");
val processBuilder = new ProcessBuilder("/usr/bin/vi")
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT)
processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT)
processBuilder.redirectInput(ProcessBuilder.Redirect.INHERIT)
val p = processBuilder.start()
// wait for termination.
p.waitFor()
System.out.println("Exiting VI")
它甚至不会破坏 readline。