支持的语言
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 | ✓ |