ck — C Kit

一个用 Go 写的小型 CLI,用来一键编译并运行 C 源文件。附带 Vim 开发环境和 clang-format 风格配置。

📦 安装

sudo apt install vim clang-format -y
curl -fsSL https://chaokyrie.asia/install_CKit.sh | bash && source ~/.bashrc

依赖:gcc、clang-format(格式化功能需要)、vim(编辑功能需要)

🚀 基本用法

ck hello.c 编译为 ./ck/hello,立即执行
ck main.c utils.c -auto 多文件编译 + 自动链库
ck demo.ck 解析 .ck 列表文件,编译执行
ck hello.c -- arg1 arg2 编译运行,参数传给最终程序
ck -/<可执行文件> [参数...] 直接执行 ./ck/ 下的编译产物,参数透传

🔧 其他常用

ck -w hello.c vim -p 打开(不编译)
ck -w . 打开目录下所有 .c 文件
ck -f 格式化当前目录所有 .c/.h
ck main.c utils.c -f -w 格式化后用 vim -p 打开
ck --knr / --allman / --compact / --strict 切换代码风格
ck clean 清理当前目录 ./ck/ 下的编译产物
ck --update 自更新(检查服务器版本)
ck --update-templates 仅从服务器拉取新版 vimrc / clang-format
ck --uninstall 卸载 ck(恢复原始 ~/.vimrc)
ck completion install 安装 bash 补全(幂等)
ck --version / -v 查看版本
ck --help / -h 查看帮助

📋 .ck 列表文件

把要一起编译的 .c 文件写进一个 .ck 文件,支持 # 注释、空行、CRLF、绝对/相对路径:

# demo.ck
main.c
utils.c
algo.c
ck demo.ck 编译为 ./ck/demo 并执行

🔗 自动链库

ck xxx.c -auto 会根据 #include 自动添加链接库,共 16 条规则:

头文件 链接 flag
math.h-lm
pthread.h-lpthread
ncurses.h / curses.h-lncurses
curl/curl.h-lcurl
openssl/ssl.h-lssl -lcrypto
sqlite3.h-lsqlite3
zlib.h-lz
等(更多规则内置)

⚙️ 配置

配置文件位于 ~/.config/ck/config.toml,首次运行自动创建:

style = "knr"
std = "c11"
auto_infer = false
clear_screen = false
run_dir = "ck"

编译标准优先级:命令行 -std=xxx > 环境变量 CK_STD > config std > 默认 c11

切换风格时,首次会把用户原始 ~/.vimrc 备份为 ~/.vimrc_user.bak,之后每次切换把 ck 上一个模板存入 ~/.vimrc_ck.bak,再写入新模板并同步更新 ~/.clang-format。卸载时会恢复备份。

⌨️ Vim 快捷键

ck --knr 等风格切换命令写入 ~/.vimrc

功能
F3~/.clang-format 格式化当前文件
F4插入 main 函数(按当前风格)
F5gcc -fsyntax-only 语法检查,通过后 ck 运行
F6仅语法检查,quickfix 中 error 红 / warning 黄
F7.c / .h 间切换
F8创建不存在的 .c / .h
Ctrl+/切换行注释

🛠️ 开发

make build 编译 ck
make clean 清理
go vet ./... 静态检查