配置

要覆盖全局配置参数,请在你的配置目录中创建一个 config.toml 文件:

  • Linux 和 Mac: ~/.config/helix/config.toml
  • Windows: %AppData%\helix\config.toml

提示:在 Helix 正常模式下输入 :config-open 即可轻松打开配置文件。

示例配置:

theme = "onedark"

[editor]
line-number = "relative"
mouse = false

[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"

[editor.file-picker]
hidden = false

你也可以使用 -c--config 命令行参数指定配置文件的路径:hx -c path/to/custom-config.toml

还可以通过向 Helix 进程发送 USR1 信号来触发配置文件重新加载,例如 pkill -USR1 hx。这仅在 Unix 操作系统上支持。

译者注:在已打开的 Helix 中可以使用 :set(或 :set-option)设置本页面罗列的键的值,如 :set line-number relative:set lsp.display-messages true。当你按 :set <Tab> 和输入命令的过程中,会弹出可配置的键。

editor 及其子表

[editor]

描述默认值
scrolloff滚动时屏幕边缘周围的填充行数5
mouse启用鼠标模式true
middle-click-paste启用中键单击粘贴true
scroll-lines每次滚轮所滚动的行数3
shell运行外部命令时使用的 shell 程序Unix: ["sh", "-c"]
Windows: ["cmd", "/C"]
line-number显示行号:absolute 每行的编号,relative 离当前行的距离。未聚焦或处于 insert mode 时,relative 仍显示绝对行号absolute
cursorline高亮光标所在行false
cursorcolumn高亮光标所在列false
gutters侧条显示的内容:可选值有 diagnosticsline-numbersspacer。注意 diagnostics 包含其他功能,比如断点。如果为空,则填充一个宽度。["diagnostics", "line-numbers"]
auto-completion自动补全时自动 pop uptrue
auto-format保存时自动格式化true
idle-timeout自上次按键后空闲计时器触发前的时间,以毫秒为单位。用于自动补全,设置为 0 表示即时补全。400
completion-trigger-len光标下触发自动补全的最小单词长度2
auto-info是否显示信息框true
true-color在未能检测到终端真彩色时,设置此项为 true 来表明使用真彩色false
rulers显示标尺的列位置列表。可以在 languages.toml 中使用特定语言的 rulers 键覆盖这里的设置。[]
bufferline在编辑器顶部显示一行显示已打开的缓冲区,可以是 alwaysnevermultiple(只在超过一个缓冲区存在时显式)never
color-modes根据模式本身用不同的颜色给模式指示器上色false

[editor.statusline]

配置在编辑器底部的状态栏。状态栏分成三个区域:

[ ... ... LEFT ... ... | ... ... ... ... CENTER ... ... ... ... | ... ... RIGHT ... ... ]

状态栏元素可以按如下方式定义:

[editor.statusline]
left = ["mode", "spinner"]
center = ["file-name"]
right = ["diagnostics", "selections", "position", "file-encoding", "file-line-ending", "file-type"]
separator = "│"
mode.normal = "NORMAL"
mode.insert = "INSERT"
mode.select = "SELECT"

[editor.statusline] 的子键如下:

描述默认值
left左端对齐的列表["mode", "spinner", "file-name"]
center中间对齐的列表[]
right右端对齐的列表["diagnostics", "selections", "position", "file-encoding"]
separator分隔元素的字符"│"
mode.normalnormal mode 下显示的文字"NOR"
mode.insertinsert mode 下显示的文字"INS"
mode.selectselect mode 下显示的文字"SEL"

可配置以下元素:

元素描述
mode当前模式 mode.normalmode.insertmode.select
spinnerLSP 活动进度指示
file-name文件路径或名称
file-encoding如果不是 UTF-8 编码,则显示文件编码
file-line-ending换行符 CRLF 或 LF
total-line-numbers总行数
file-type文件类型
diagnosticswarnings 和/或 errors 的数量
selections活动选区的数量
position光标位置
position-percentage光标位置占总行数的百分比
separator定义在 editor.statusline.separator 的字符串,默认为
spacer在元素之间插入空格,可以指定多个/连续的空格

[editor.lsp]

描述默认值
display-messages在 statusline 下方显示 LSP 进度消息1false
auto-signature-help自动弹出签名帮助(和参数提示)true
display-signature-help-docs在签名帮助弹出菜单中显示文档true
1

默认情况下,进度旋钮显示在文件路径旁边的 statusline 中。

[editor.cursor-shape]

定义每种模式下光标的形状。注意,由于终端环境的限制,只有主光标可以更改形状。这些选项的有效值为 blockbarunderlinehidden

描述默认值
normalnormal mode 下的光标形状block
insertinsert mode 下的光标形状block
selectselect mode 下的光标形状block

[editor.file-picker]

设置文件选取器和全局搜索的选项。下面列出的默认文件选取器配置中,除了最后一个键之外,所有键都具有 IgnoreOptions: Helix 文件选取器和全局搜索是否无视隐藏文件和 ignore 文件中列出的文件。还有一个尚未定义的键 max-depth

所有与 git 相关的选项仅在 git 存储库中启用。

描述默认值
hidden忽略隐藏文件true
parents父目录读取 ignored 文件true
ignore读取 .ignoretrue
git-ignore读取 .gitignoretrue
git-global读取全局 .gitignore,其路径由 git config 指定true
git-exclude读取 .git/info/exclude 文件true
max-depth为递归的最大深度设置一个整数值None

[editor.auto-pairs]

启用自动插入配对符号,如圆括号、方括号等。可以是简单的布尔值,也可以是单字符配对映射。

要完全关闭自动配对,将 auto-pairs 设置为 false

[editor]
auto-pairs = false # defaults to `true`

默认配对为 (){}[]''""``,但可以通过将 auto-pairs 设置为 TOML 表进行自定义:

[editor.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
'`' = '`'
'<' = '>'

此外,此设置可在语言配置中使用。除非编辑器设置为 false,否则语言配置将覆盖 editor 配置。

添加 <> 和删除 '' 的示例,在 languages.toml 中:

[[language]]
name = "rust"

[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
'`' = '`'
'<' = '>'

[editor.search]

搜索选项。

描述默认值
smart-case正则表达式启用智能大小写:除非包含大写字符,否则对大小写不敏感true
wrap-around匹配达到最后一个之后是否回到第一个true

[editor.whitespace]

通过可见字符渲染空格。使用 :set whitespace.render all 可临时开启可见空格。

描述默认值
render是否渲染空格,要么是 allnone,要么是带子键的表,子键有 spacetabnewline.none
characters渲染空格的字符;子键为 tabspacenbspnewlinetabpad 之一见下面的例子

示例:

[editor.whitespace]
render = "all"
# or control each character
[editor.whitespace.render]
space = "all"
tab = "all"
newline = "none"

[editor.whitespace.characters]
space = "·"
nbsp = "⍽"
tab = "→"
newline = "⏎"
tabpad = "·" # Tabs will look like "→···" (depending on tab width)

[editor.indent-guides]

渲染垂直缩进辅助线。

描述默认值
render是否渲染缩进辅助线false
character渲染辅助线的字符
skip-levels跳过的缩进级别数0

示例:

[editor.indent-guides]
render = true
character = "╎" # Some characters that work well: "▏", "┆", "┊", "⸽"
skip-levels = 1