gpt4 book ai didi

java - 无法从 Java/Scala 控制台应用程序打开工作的 VIM 编辑器

转载 作者:行者123 更新时间:2023-11-30 11:03:05 25 4
gpt4 key购买 nike

我正在尝试从 Java 命令行程序运行交互式编辑器。例如,这是 Python 中的等效代码:

import subprocess; subprocess.call(["vim", "/tmp/hello"])

它会打开一个 vim 编辑器,并在您完成编辑后将控制权返回给 Python 程序。

“等价的”Java 程序:

public class Main{
public static void main(String[] args) throws java.io.IOException{
new java.lang.ProcessBuilder()
.command("vim", "/tmp/hello2")
.inheritIO()
.start();

}
}

没有正确打开 VIM,使我的终端处于一种奇怪的状态,我需要在继续之前调用 reset

“等价”的 Scala 程序

object Main{
def main(args: Array[String]): Unit = {
import sys.process._
Seq("vim", "/tmp/hello2").!<
}
}

成功打开VIM,但键盘导航很卡,按方向键导致输入如下

^[OD^[OA^[OC^[OB

被输入到文本区域而不是移动我的光标。

有没有什么方法可以在 Java/Scala 中复制正确的 Python 行为?

最佳答案

vi, emacs 等程序在终端程序中工作,例如 xterm .它们不是为在工艺流中工作而设计的 JavaScala用于使用 ProcessBuilder 执行外部程序和 sys.process分别。这就是为什么您无法成功操作光标以及为什么 vim 的原因无法正常打开,迫使您重置。

我没试过这个,但你可以尝试调用终端程序而不是 vim直接并将参数传递给该终端程序以打开vim .

关于java - 无法从 Java/Scala 控制台应用程序打开工作的 VIM 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com