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