入门 Zed Industries 2026-09-14 17:42:19 · 0 阅读
第12章 Modeline
Modeline 是位于文件开头或结尾的特殊注释,用于为该文件单独配置编辑器设置。Zed 同时支持 Vim 和 Emacs 两种 modeline 格式,让你可以直接在文件里指定缩进宽度、缩进风格、文件类型等设置。
配置
通过 modeline_lines 设置可以控制 Zed 在文件中搜索 modeline 的行数:
{
"modeline_lines": 5
}
设为 0 可完全禁用 modeline 解析。
Emacs
Zed 对 Emacs file variables 提供了一定程度的兼容支持。
示例:
# -*- mode: python; tab-width: 4; indent-tabs-mode: nil; -*-
支持的 Emacs 变量
| 变量 | 说明 | 对应的 Zed 设置 |
|---|---|---|
mode |
主模式/语言 | 语言检测 |
tab-width |
Tab 显示宽度 | tab_size |
fill-column |
自动换行列数 | preferred_line_length |
indent-tabs-mode |
nil 用空格,t 用 Tab |
hard_tabs |
electric-indent-mode |
自动缩进 | auto_indent |
require-final-newline |
确保文件末尾有换行符 | ensure_final_newline_on_save |
show-trailing-whitespace |
显示行尾空白字符 | show_whitespaces |
Vim
Zed 支持Vim modeline 的兼容功能。
示例:
# vim: set ft=python ts=4 sw=4 et:
支持的 Vim 选项
| 选项 | 别名 | 说明 | Zed 设置 |
|---|---|---|---|
filetype |
ft |
文件类型/语言 | 语言检测 |
tabstop |
ts |
Tab 键对应的空格数 | tab_size |
textwidth |
tw |
最大行宽 | preferred_line_length |
expandtab |
et |
使用空格代替 Tab | hard_tabs |
noexpandtab |
noet |
使用 Tab 代替空格 | hard_tabs |
autoindent |
ai |
启用自动缩进 | auto_indent |
noautoindent |
noai |
禁用自动缩进 | auto_indent |
endofline |
eol |
确保文件末尾有换行符 | ensure_final_newline_on_save |
noendofline |
noeol |
禁用末尾换行符 | ensure_final_newline_on_save |
备注
- 会在文件的前 1 KB 范围内搜索 modelines。
- 若 Emacs 和 Vim 的 modelines 同时存在,Emacs 的 modelines 优先级更高。
- 位于文件开头的 modelines 优先级高于位于文件末尾的。