3

如何vi从我的 java 应用程序中打开编辑器?我已经试过了

Process p = new ProcessBuilder("xterm","-e","vi /backup/xyz/test/abc.txt").start();  

int exitVal = p.waitFor();
System.out.println("Exited with error code "+exitVal);

但这vi会在一个新终端中打开。我希望 vi 编辑器在我的应用程序正在运行的同一终端中打开

4

2 回答 2

2

应该很简单:省略 xterm,只需启动 vi:

Process p = new ProcessBuilder("vi", "/backup/xyz/test/abc.txt").start();  

如果您需要 vi 的更多命令行参数,请将它们作为单独的字符串添加,而不是在第一个参数的 "" 内。

并且启动像 vi 这样的终端程序自然需要从可见终端启动 java 应用程序,所以 vi 有一个可以使用的终端,但我认为是这样。

于 2012-11-06T18:56:30.443 回答
2

问题在这里突出显示:

如何在 commons-exec 下从 Java 中启动 VI?

但是,从 Java 1.7 开始,您可以使用下一个示例来透明地重定向并拥有完整的控制台功能

    System.out.println("STARTING VI");
     ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/vi");
     processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
     processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
     processBuilder.redirectInput(ProcessBuilder.Redirect.INHERIT);

     Process p = processBuilder.start();
      // wait for termination.
      p.waitFor();
    System.out.println("Exiting VI");

这将允许您透明地打开 VI。

于 2015-04-30T16:14:15.507 回答