搬运一下吧,之前的博客园准备废掉了。
ST是个什么东西就不废话了。
它支持按照文件类型自动选择编译器(Tools→Build System)(当然,前提是你装了这个编译器)(一般来说,Automatic就足够了)。
也可以在内嵌的终端中运行你的程序(Tools→Run),不过有个问题,它内嵌的终端不支持用户输入,也就是说,含有scanf、input、nextInt之类的语句写了就是白写。
【好吧ST你赢了。】
【大不了我不用你的终端就是了。】
于是目标就是修改Run的代码,使得在运行的时候使用弹出的cmd窗口。找了一下,Run命令是在%Appdata%\Sublime Text 2\Packages文件夹中…………的某些子文件夹里面的后缀名为sublime-build的文件中提到了的,例如“C++.sublime-build”,里面有一段variants,其中cmd就是运行命令。
于是我尝试用start来打开新窗口,程序是能执行了,但是执行完之后接着关了,除非你打上system("pause")…………反正我是不喜欢。
继续尝试,发现start后面的东西都会被当作程序来执行,于是直接在后面加“& pause”是不现实了,但是还好我还记得一点批处理。
于是解决方法如下!
写一个批处理:
@ECHO OFF call %1 %2 & pause & exit
保存文件名随意,例如“st_run_script.bat”,保存位置随意,例如“D:\Sublime Text 2”(我的ST安装目录),内容大概就是在当前窗口运行一个命令:“参数1 参数2”,很显然,参数1可以用做程序名,参数2可以用做程序参数。那么我们把variants里面的cmd命令改一改:
"cmd": ["start", "D:\\Sublim~1\\st_run_script.bat", "${file_path}\\\\${file_base_name}"]
上文的D:\\Sublim~1\\st_run_script.bat是我的bat文件存放位置。
如果没用的话,应该是有一行"shell": true,把那行删了就好。
差不多能看懂吧?
ruby.sublime-build内容类似:
"cmd": ["start", "D:\\Sublim~1\\st_run_script.bat", "ruby", "${file}"]
把用到的语言都改一改,于是大功告成!
Update 2014-02-10
Ubuntu的解决方案如下:
首先你要有个bash,其次你要有个gnome-terminal。
写一个shell脚本,不妨存为st_run_script.sh,保存位置嘛,在ST安装目录里就是了:
#!/bin/bash $1 echo 'Press anykey to continue...' SAVEDSTTY=`stty -g` stty -echo stty raw dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY
然后就是安装目录下Pristine Packages文件夹里的C++.sublime-package文件了,用压缩软件打开,找到C++.sublime-build文件,里面有一行改掉:
"cmd": ["gnome-terminal", "-x", "/home/rex/Download/Sublime_Text_2/st_run_script.sh", "${file_path}/${file_base_name}"]
当然,上面的/home/rex/Download/Sublime_Text_2/st_run_script.sh是我的sh文件的路径。
如果没用的话,应该是有一行"shell": true,把那行删了就好。
Ruby.sublime-package里面的Ruby.sublime-build文件也可以如法炮制:
"cmd": ["gnome-terminal", "-x", "/home/rex/Download/Sublime_Text_2/st_run_script.sh", "ruby ${file}"]
于是。。。。世界清静了!