我怎样才能从我的Java应用程序在同一个terminal打开vi编辑器?

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

 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); 

但是这在一个新的terminal打开vi我希望vi编辑器在我的应用程序运行的terminal中打开

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

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

如果你想要vi的更多的命令行参数,把它们作为单独的字符串添加,而不是在第一个参数的“”之内。

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

这里强调了这个问题:

如何在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。