17 条
LOGO
Yutuo

最近在看一本C语言方面的书,总想找一个简单的编辑器,可以实现编译运行单个C文件。试过Eclipse和Netbeans以及code blocks(VC6在Windows7下不可用)。突然发现其实SublimeText就可以简单实现我需要的功能。其设置方法如下

1. 安装C语言编译器MinGW,并把MinGW安装目录下的bin目录添加到环境变量PATH里。详细方法参照MinGW安装和使用

2. 因为SublimeText原本的编译环境不支持非英语系统,所以要先修改SublimeText。把SublimeText安装目录下的Data\Packages\Default\exec.py的45行改成下面的代码:

# proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
proc_env[k] = os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())

3. 在SublimeText安装目录下的DataPackagesUser新建一个C.sublime-build(注意不要修改文件名和大小写)。因为SublimeText默认的执行不支持输入,所以我添加了一个RunInCommand,可以让程序在CMD下面执行。内容如下

{
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["cmd", "/c", "gcc", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "cmd", "/c", "${file_path}/${file_base_name}"]
        },
        {
            "name": "RunInCommand",
            "cmd": ["cmd", "/c", "gcc", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "${file_path}/${file_base_name} & pause"]
        }
    ]
}

4. 设置快捷键。在SublimeText里,打开Preferences -> Key Bindings - User,在里面添加一行{ "keys": ["ctrl+alt+shift+b"], "command": "build", "args": {"variant": "RunInCommand"} }。如果已经设置,跳过。我定义的是ctrl+alt+shift+b,也可以根据自己的定义,以下是我的 Key Bindings - User文件内容

[
    { "keys": ["ctrl+alt+shift+b"], "command": "build", "args": {"variant": "RunInCommand"} }
]

5. 测试。自己在SublimeText写一个C程序,ctrl+b为编译;ctrl+shift+b为编译后在SublimeText里显示结果;ctrl+alt+shift+b为编译后在CMD里运行。

注意:源代码路径中不能有空格和非英文字符。

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论(17)

  1. 达瓦达瓦

    请问那个DataPackagesDefaultexec.py在哪呀,为什么我只有PackageSetup.pyc

    1. 宇托

      对不起,这个写错了,应该是Data\Packages\Default\exec.py。另外,在Sublime Text 3里没有这个文件。

  2. 锦瑟

    不行,不知道为什么我的电脑上要这样"cmd" : ["${file_path}/${file_base_name}"]才能运行,用你的就成了:
    gcc: error: D:\C: No such file or directory
    gcc: fatal error: no input files
    compilation terminated.
    [Decode error - output not utf-8]
    C++: error: /test: No such file or directory

    1. 宇托

      你的文件目录里是不是有空格或者中文?
      另外我用的是Sublime Text 2,你的版本是不是不一样?

      1. 锦瑟

        我也是sbulime text 2文件目录是D:\C&C++,系统windows7 ultimate x64,文件名test.c

        1. 宇托

          目录里不能有&。你把文件目录重命名为D:\C_C++应该就没问题了

  3. xu

    你好, 请教个问题。 ST本身是支持C++编译的,只要把C++编译器加入到环境变量中就行了。( 嗯,我就这样做了,确实好用。) 然后因为是g++编译的, 所以我需要再用c编译,所以我重新添加了C编译。但是有个问题就是不能自动选择编译系统。 所以我想请教下怎么让ST自动选择编译系统

    1. 宇托

      我用的是ST2,用上面的设置完成之后,在选择“自动选择编译器”时,文件后缀名为c的文件会自动用gcc编译,后缀名为cpp的文件会用g++编译。ST3我没有试过,不过应该也可以自动选择吧。

  4. jason

    跳出cmd显示不是内部或外部命令,也不是可运行的程序或批处理文件,但是在sublime里可以运行,请博主帮忙。
    我装的是g++ 尝试把上面有gcc的换成g++但还是不行

    1. yutuo

      GCC的文件目录和C文件的目录里有空格或者中文吗?

  5. 小荆

    32位系统无法使用,怎么破

    1. yutuo

      32位也应该是没问题的,你下载的版本是32位的吗?

  6. fdsfsd

    我下了sublime 安装目录里面没有你说的那些文件夹和文件?怎么安装》?

    1. fdsfsd

      摸索着弄好了,谢谢你的教程!~

      1. luffy0520

        怎么弄的 教教我

  7. harry

    出现这个如何解决?[Decode error - output not utf-8]

    1. yutuo

      你用了ConvertToUTF8吧,在这种情况下,输出不是UTF8,目前我也没找到解决方法,你可以用CMD执行。按我写的步骤的话,快捷键是ctrl+alt+shift+b。