Skip to content

Instantly share code, notes, and snippets.

@velut
Created March 5, 2026 23:55
Show Gist options
  • Select an option

  • Save velut/7e047ce594cae5ffa4e2999cdc2d71ca to your computer and use it in GitHub Desktop.

Select an option

Save velut/7e047ce594cae5ffa4e2999cdc2d71ca to your computer and use it in GitHub Desktop.
Helix editor config
# theme = "catppuccin_latte"
theme = "catppuccin_mocha"
[editor]
# mouse = false
line-number = "relative"
cursorline = true
bufferline = "always"
[editor.cursor-shape]
insert = "bar"
# insert = "block"
normal = "block"
select = "underline"
[keys.normal]
C-g = [
":write-all",
":insert-output lazygit >/dev/tty",
":redraw",
":reload-all"
]
C-r = [
":write-all",
":insert-output scooter >/dev/tty",
":redraw",
":reload-all"
]
C-q = ":buffer-close"
C-s = ":write-all"
[keys.normal.space]
e = [
":sh rm -f /tmp/unique-file-h21a434",
":insert-output yazi '%{buffer_name}' --chooser-file=/tmp/unique-file-h21a434",
":insert-output echo \"x1b[?1049h\" > /dev/tty",
":open %sh{cat /tmp/unique-file-h21a434}",
":redraw",
]
i = ":toggle lsp.display-inlay-hints"
1 = ":reload-all"
[keys.insert]
"A-n" = "normal_mode"
# See https://github.com/helix-editor/helix/wiki/Language-Server-Configurations
# Install language servers globally with bun and cargo.
#
# bun i -g @astrojs/language-server prettier prettier-plugin-astro typescript typescript-language-server vscode-langservers-extracted svelte-language-server @tailwindcss/language-server oxfmt oxlint oxlint-tsgolint
# cargo install codebook-lsp
# cargo install --locked --git https://github.com/estin/simple-completion-language-server.git
#
# Language servers configuration
#
# Astro
[language-server.astro-ls]
command = "astro-ls"
args = ["--stdio"]
config = {typescript = {tsdk = "/home/ADD_YOUR_USERNAME_HERE/.bun/install/global/node_modules/typescript/lib"}, environment = "node"}
# Codebook
[language-server.codebook]
command = "codebook-lsp"
args = ["serve"]
# Go
[language-server.gopls.config]
"formatting.gofumpt" = true
# Oxlint
[language-server.oxlint-language-server]
command = "oxlint"
args = ["--type-aware", "--lsp"]
# Oxfmt
# [language-server.oxfmt]
# command = "oxfmt"
# args = ["--lsp"]
# Rust analizer
[language-server.rust-analyzer.config.check]
command = "clippy"
[language-server.rust-analyzer.config.cargo]
features = "all"
# Simple completion
[language-server.scls]
command = "simple-completion-language-server"
[language-server.scls.config]
feature_words = true # enable completion by word
feature_snippets = true # enable snippets
snippets_first = true # completions will return before snippets by default
snippets_inline_by_word_tail = false # suggest snippets by WORD tail, for example text `xsq|` become `x^2|` when snippet `sq` has body `^2`
feature_unicode_input = false # enable "unicode input"
feature_paths = false # enable path completion
feature_citations = false # enable citation completion (only on `citation` feature enabled)
# SQL
[language-server.sql-language-server]
command = "sql-language-server"
args = ["up", "--method", "stdio"]
# Tailwindcss
[language-server.tailwindcss-ls]
command = "tailwindcss-language-server"
args = ["--stdio"]
#
# Languages configuration
#
# Astro
[[language]]
name = "astro"
language-servers = [ "astro-ls", "tailwindcss-ls", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = "prettier", args = ["--plugin", "prettier-plugin-astro", "--parser", "astro"] }
auto-format = true
# CSS
[[language]]
name = "css"
language-servers = [ "vscode-css-language-server", "tailwindcss-ls", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "css"] }
auto-format = true
# HTML
[[language]]
name = "html"
language-servers = [ "vscode-html-language-server", "tailwindcss-ls", "scls", "codebook", "oxfmt" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "html"] }
auto-format = true
# JavaScript
[[language]]
name = "javascript"
language-servers = [ "typescript-language-server", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "typescript"] }
auto-format = true
# JSX
[[language]]
name = "jsx"
language-servers = [ "typescript-language-server", "tailwindcss-ls", "oxlint-language-server", "scls", "codebook", "oxfmt" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "typescript"] }
auto-format = true
# JSON
[[language]]
name = "json"
language-servers = [ "vscode-json-language-server", "scls", "codebook", "oxfmt" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# Since prettier formats `package.json` files differently from normal `foo.json` files,
# we need to pass the buffer name. Adding `--parser json` overrieds the buffer name option.
# formatter = { command = 'prettier', args = ["--stdin-filepath", "%{buffer_name}"] }
auto-format = true
# JSONC
[[language]]
name = "jsonc"
language-servers = [ "vscode-json-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "jsonc"] }
auto-format = true
# Markdown
[[language]]
name = "markdown"
language-servers = [ "scls", "codebook" ]
comment-tokens = ["-", "+", "*", "- [ ]", ">"]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "markdown"] }
auto-format = true
# SQL
[[language]]
name = "sql"
language-servers = [ "sql-language-server", "scls" ]
# Svelte
[[language]]
name = "svelte"
language-servers = [ "svelteserver", "tailwindcss-ls", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = "prettier", args = ["--plugin", "prettier-plugin-svelte", "--parser", "svelte"] }
auto-format = true
# TypeScript
[[language]]
name = "typescript"
language-servers = [ "typescript-language-server", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "typescript"] }
auto-format = true
# TSX
[[language]]
name = "tsx"
language-servers = [ "typescript-language-server", "tailwindcss-ls", "oxlint-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = 'prettier', args = ["--parser", "typescript"] }
auto-format = true
# XML
[[language]]
name = "xml"
file-types = [ "xml", "svg", "xsd", "xslt", "xsl" ]
auto-format = true
formatter = { command = "xmllint", args = ["--format", "-"] }
# language-servers = [ "xml" ]
# YAML
[[language]]
name = "yaml"
language-servers = [ "yaml-language-server", "scls", "codebook" ]
formatter = { command = 'oxfmt', args = ["--stdin-filepath", "%{buffer_name}"] }
# formatter = { command = "prettier", args = ["--parser", "yaml"] }
auto-format = true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment