Ⅰ. 插件描述
Compile and execute C "scripts" in one go!Ⅱ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'ryanmjacobs/c'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'ryanmjacobs/c'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'ryanmjacobs/c'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/ryanmjacobs/c
Ⅳ. 文档说明
# c
"There isn't much that's special about C. That's one of the reasons why it's
fast."
I love C for its raw speed (although it does have its drawbacks). We should
all write more C.
With this shell script, you can compile and execute C "scripts" in one go!
(Oh yeah, and it works for C++ too.)

Here's a simple example:
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
return 0;
}Run it by typing:
$ c hello.c
Hello World!Or, call it from the shebang!
#!/usr/bin/c
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
return 0;
}$ chmod +x hello.c
$ ./hello.c
Hello World!Hooked? Here's how to install it:
Use a package manager? Check here.
For the entire system:
$ wget https://raw.githubusercontent.com/ryanmjacobs/c/master/c
$ sudo install -m 755 c /usr/bin/c
# Or... for systems that prefer /usr/local/bin (e.g. macOS)
$ sudo install -m 755 c /usr/local/bin/cFor your local user only:
$ wget https://raw.githubusercontent.com/ryanmjacobs/c/master/c
$ sudo install -Dm 755 c ~/.bin/c
$ echo 'PATH=$PATH:$HOME/.bin' >> ~/.bashrcNote: if you install it somewhere other than /usr/bin/c, then your shebang
will be different. For example it may be something more similar to#!/home/ryan/.bin/c.
Okay, how do I use it?
c will use whatever $CC is set to. You can change this with:
$ export CC=clang
$ export CC=tcc
$ # etc...CLI
Multiple Files - CLI
Anything you want passed to the compiler, put in quotes as the first argument.
Whether they're flags (-Wall, -O2, etc.) or file names (file.c,main.c, etc.).
$ c "main.c other.c" arg1 arg2
$ c "main.c other.c -O3 -Wall -lncurses" arg1 arg2Single File - CLI
With only one file, omit the quotes:
$ c hello.c
$ c main.c arg1 arg2Shebang!
After adding a shebang, just set the file to executable and it's ready to run.
$ chmod +x file.c
$ ./file.cSingle File - Shebang
Add this to the top of your C file:
#!/usr/bin/cMultiple Files - Shebang
Just tack on any extra flags, options, or files you want passed to the compiler.
Then be sure to add the terminating -- characters.
#!/usr/bin/c file1.c file2.c -lncurses -lm --Caching
The default cache size is set to 5 MB. You can change this with:
$ export C_CACHE_SIZE=$((10*1024)) # 10 MBThe default cache path is set to $TMPDIR/c.cache. You can change this with:
$ export C_CACHE_PATH="/tmp/the_cache"Contributing
Feel free to submit any ideas, questions, or problems by reporting an issue.
Or, if you're feeling a bit brave, submit a pull request. :grimacing:
Just hack away and make sure that all the tests pass.
$ cd tests
$ ./test.shWhy?
First of all, I want to clarify why this is not the same as tcc -run.
TCC is a compiler. We all know that. TCC will perform its own set of
optimizations, just as GCC will perform its own and Clang will perform its
- The purpose of this script is to give a simple front-end to your favorite
compiler.
Whether it's GCC, Clang, or something else entirely, you get to choose
your compiler.
Second reason: it's simply satisfying to type c hello.c and see it run instantly.
Third reason: I'm a fan of speed, and C definitely offers it. Being able to
write a small, fast, and portable C "script" is great. You can pass around a
C "script" just like you would a BASH script.
zsh
If you're using zsh, then you can take advantage of zsh's suffix aliases:
$ alias -s c='c'
$ alias -s cc='c'
$ alias -s cpp='c'Then you can run files with ./file.c without chmod +x.
Packages
Use a package manager? You've come to the right place.
AUR: https://aur.archlinux.org/packages/c/
bpkg: bpkg install ryanmjacobs/c
brew: brew install https://raw.githubusercontent.com/ryanmjacobs/c/master/c.rb
(shebang will be #!/usr/local/bin/c)
Todo
Maybe later we can implement caching. Done!
License
Basically, you can do whatever you want provided that you include
the LICENSE notice in any copy of the source. Also, I am not liable
if the script breaks anything.