如何从我的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);
但这会在新终端中打开vi
。 我希望vi编辑器在我的应用程序运行的同一终端中打开
答案 0 :(得分:2)
应该很简单:省略xterm,只需启动vi:
Process p = new ProcessBuilder("vi", "/backup/xyz/test/abc.txt").start();
如果你想要更多vi的命令行参数,可以将它们添加为单独的字符串,而不是在第一个参数的“”内。
启动像vi这样的终端程序自然要求你从可见终端启动java应用程序,所以vi有一个终端可以使用,但我认为是这样。
答案 1 :(得分:2)
这里突出了问题:
How can I launch VI from within Java under commons-exec?
但是,从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。