3

我正在探索使用Scala REPL桥接shell。它主要是通过import sys.process._包来实现的,我可以"ls" !用来执行shell。
现在,我想用"vi" !vi来打开一个交互式编辑器,真的很疯狂但是很刺激。在 REPL 中输入 cmd 后,终端打开一个 init vi 画布。不幸的是,终端没有从我的键盘读取任何输入。

是否可以在 REPL 中打开 vi ?

4

1 回答 1

1

来自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。

于 2018-12-14T18:34:49.897 回答