支持的语言

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  

目录