支持的语言

Aider 应该能够很好地支持大多数流行的编程语言。这是因为顶级的大型语言模型(LLM)对大多数主流语言都很熟悉,并且了解常用的库、包和框架。

Aider 为多种语言提供了专门的语法检查支持。默认情况下,每当文件被编辑时,aider 都会运行内置的 linter。如果发现语法错误,aider 会提供修复建议。这有助于发现并快速解决小的代码问题。

Aider 还通过生成仓库地图来进行代码分析,帮助 LLM 更好地导航大型代码库。目前,aider 可以为下面列出的许多流行主流语言生成仓库地图。

如何为其他语言添加支持

Aider 应该能够很好地支持其他语言,即使那些没有仓库映射(repo map)或代码检查(linter)支持的语言。 在假设你的语言需要更好的支持之前,你应该先尝试用 aider 进行编码。

也就是说,如果 aider 已经支持对你的语言进行代码检查, 那么添加仓库映射支持应该是可行的。 为了构建仓库映射,aider 需要从该语言的 tree-sitter 语法中获取 tags.scm 文件。 如果你能找到并在 GitHub issue 中分享该文件, 那么就有可能添加仓库映射支持。

如果 aider 尚未支持对你的语言进行代码检查, 添加支持将会更加复杂。 Aider 依赖于 tree-sitter-language-pack 来提供预打包的 tree-sitter 语言解析器。 这使得用户能够在多种不同的环境中轻松安装 aider。 你可能需要与该项目合作以获得对你语言的支持, 这将使 aider 能够轻松地对那种语言进行代码检查。 对于仓库映射支持,你还需要找到或创建一个 tags.scm 文件。

语言 文件扩展名 仓库映射 代码检查
actionscript .as   ✓
ada .adb   ✓
ada .ads   ✓
agda .agda   ✓
arduino .ino ✓ ✓
asm .asm   ✓
asm .s   ✓
astro .astro   ✓
bash .bash   ✓
bash .sh   ✓
bash .zsh   ✓
beancount .bean   ✓
bibtex .bib   ✓
bicep .bicep   ✓
bitbake .bb   ✓
bitbake .bbappend   ✓
bitbake .bbclass   ✓
c .c ✓ ✓
c .h ✓ ✓
cairo .cairo   ✓
capnp .capnp   ✓
chatito .chatito ✓ ✓
clarity .clar   ✓
clojure .clj ✓ ✓
clojure .cljc ✓ ✓
clojure .cljs ✓ ✓
clojure .edn ✓ ✓
cmake .cmake   ✓
cmake CMakeLists.txt   ✓
commonlisp .cl ✓ ✓
commonlisp .lisp ✓ ✓
cpon .cpon   ✓
cpp .cc ✓ ✓
cpp .cpp ✓ ✓
cpp .cxx ✓ ✓
cpp .h++ ✓ ✓
cpp .hpp ✓ ✓
cpp .hxx ✓ ✓
csharp .cs ✓ ✓
css .css   ✓
csv .csv   ✓
cuda .cu   ✓
cuda .cuh   ✓
d .d ✓ ✓
dart .dart ✓ ✓
dockerfile Dockerfile   ✓
dtd .dtd   ✓
elisp .el ✓ ✓
elixir .ex ✓ ✓
elixir .exs ✓ ✓
elm .elm ✓ ✓
erlang .erl   ✓
erlang .hrl   ✓
fennel .fnl   ✓
firrtl .fir   ✓
fish .fish   ✓
fortran .f   ✓
fortran .f03   ✓
fortran .f08   ✓
fortran .f90   ✓
fortran .f95   ✓
func .fc   ✓
gdscript .gd   ✓
gitattributes .gitattributes   ✓
gitcommit .gitcommit   ✓
gitignore .gitignore   ✓
gleam .gleam ✓ ✓
glsl .frag   ✓
glsl .glsl   ✓
glsl .vert   ✓
gn .gn   ✓
gn .gni   ✓
go .go ✓ ✓
gomod go.mod   ✓
gosum go.sum   ✓
groovy .groovy   ✓
gstlaunch .launch   ✓
hack .hack   ✓
hare .ha   ✓
haskell .hs   ✓
haxe .hx   ✓
hcl .hcl ✓ ✓
hcl .tf ✓ ✓
hcl .tfvars ✓ ✓
heex .heex   ✓
hlsl .hlsl   ✓
html .htm   ✓
html .html   ✓
hyprlang .hypr   ✓
ispc .ispc   ✓
janet .janet   ✓
java .java ✓ ✓
javascript .js ✓ ✓
javascript .jsx ✓ ✓
javascript .mjs ✓ ✓
jsdoc .jsdoc   ✓
json .json   ✓
jsonnet .jsonnet   ✓
jsonnet .libsonnet   ✓
julia .jl   ✓
kconfig Kconfig   ✓
kdl .kdl   ✓
kotlin .kt ✓ ✓
kotlin .kts ✓ ✓
latex .cls   ✓
latex .sty   ✓
latex .tex   ✓
linkerscript .ld   ✓
llvm .ll   ✓
lua .lua ✓ ✓
luadoc .luadoc   ✓
luap .luap   ✓
luau .luau   ✓
magik .magik   ✓
make .mk   ✓
make Makefile   ✓
markdown .markdown   ✓
markdown .md   ✓
matlab .m ✓ ✓
matlab .mat ✓ ✓
mermaid .mermaid   ✓
meson meson.build   ✓
ninja .ninja   ✓
nix .nix   ✓
nqc .nqc   ✓
objc .mm   ✓
ocaml .ml ✓ ✓
ocaml_interface .mli ✓ ✓
odin .odin   ✓
org .org   ✓
pascal .pas   ✓
pascal .pp   ✓
pem .pem   ✓
perl .pl   ✓
perl .pm   ✓
pgn .pgn   ✓
php .php ✓ ✓
po .po   ✓
po .pot   ✓
pony .pony ✓ ✓
powershell .ps1   ✓
powershell .psm1   ✓
printf .printf   ✓
prisma .prisma   ✓
properties .properties ✓ ✓
proto .proto   ✓
psv .psv   ✓
purescript .purs   ✓
pymanifest MANIFEST.in   ✓
python .py ✓ ✓
qmldir qmldir   ✓
qmljs .qml   ✓
r .R ✓ ✓
r .r ✓ ✓
racket .rkt ✓ ✓
re2c .re2c   ✓
readline .inputrc   ✓
requirements requirements.txt   ✓
ron .ron   ✓
rst .rst   ✓
ruby .rb ✓ ✓
rust .rs ✓ ✓
scala .sc ✓ ✓
scala .scala ✓ ✓
scheme .scm   ✓
scheme .ss   ✓
scss .scss   ✓
smali .smali   ✓
smithy .smithy   ✓
solidity .sol ✓ ✓
sparql .rq   ✓
sql .sql   ✓
squirrel .nut   ✓
starlark .bzl   ✓
starlark BUILD   ✓
starlark WORKSPACE   ✓
svelte .svelte   ✓
swift .swift ✓ ✓
tablegen .td   ✓
tcl .tcl   ✓
thrift .thrift   ✓
toml .toml   ✓
tsv .tsv   ✓
twig .twig   ✓
typescript .ts ✓ ✓
typescript .tsx ✓ ✓
typst .typ   ✓
udev .rules ✓ ✓
ungrammar .ungram   ✓
uxntal .tal   ✓
verilog .sv   ✓
verilog .v   ✓
vhdl .vhd   ✓
vhdl .vhdl   ✓
vim .vim   ✓
vim .vimrc   ✓
vue .vue   ✓
wgsl .wgsl   ✓
xcompose .XCompose   ✓
xml .svg   ✓
xml .xml   ✓
xml .xsl   ✓
yuck .yuck   ✓
zig .zig   ✓

目录