如何从同一终端的java应用程序中打开vi编辑器?

时间:2012-11-06 18:48:31

标签: java linux

如何从我的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编辑器在我的应用程序运行的同一终端中打开

2 个答案:

答案 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。