.. | ||
runtime/themes | ||
snippets | ||
unicode-input | ||
config.toml | ||
external-snippets.toml | ||
languages.toml | ||
README.md |
Helix Configuration
Language Server Setup
Language Servers to install to get the config to work as is:
General editor features
"Simple" Completions, like words, emojis, kanji, etc
cargo install --git https://github.com/estin/simple-completion-language-server.git
# after setting up the helix config, run:
simple-completion-language-server fetch-external-snippets
# and optionally validate the snippets with
simple-completion-language-server validate-snippets
simple-completion-language-server validate-unicode-input
This LS uses snippets and mappings for completions. My config uses the suggested friendly-snippets and vim-unicode-snippets.
"Smart" Completions, aka LLM support
This config uses helix-gpt to integrate Codeium smart completions. Please also check out LSP-AI as an alternative, that supports local inference with models like stable-code-3b via llama.cpp.
In case you need to fetch the Codeium API key (which is weirdly not possible directly via their web interface), log into their web interface and open the vim plugin api key page. Then copy and paste the API key either into the config or set it up as environment variable CODEIUM_API_KEY
(I have a ~/.env file for such keys, that I source in .profile to avoid publishing them in my repository).
To install helix-gpt, please refer to the readme. I use it "without bun", by downloading a release version and throwing the binary into my local bin folder:
# version 0.31 was newest at the time of writing
wget https://github.com/leona/helix-gpt/releases/download/0.31/helix-gpt-0.31-x86_64-linux.tar.gz \
-O /tmp/helix-gpt.tar.gz \
&& tar -zxvf /tmp/helix-gpt.tar.gz \
&& mv helix-gpt-0.31-x86_64-linux ~/.local/bin/helix-gpt \
&& chmod +x ~/.local/bin/helix-gpt
Web development
Vuejs, Typescript, Javascript, HTML, CSS
Inspired by https://dev.to/morlinbrot/configure-helix-for-typescript-eslint-prettierdprint-582c
# vscode-langservers-extracted includes LSs for html, css, json, markdown and eslint
# typescript runtime should be installed globally to make the typescript and vue language servers work
npm i -g typescript typescript-language-server vscode-langservers-extracted emmet-ls @vue/language-server
JSON, YAML, TOML
npm i -g vscode-json-language-server # part of vscode-langservers-extracted
npm i -g yaml-language-server
# TOML: see https://taplo.tamasfe.dev/cli/installation/binary.html for taplo binarys
cargo install taplo-cli --locked # or cargo install taplo-cli --locked --no-default-features --features lsp
Rust
To learn more about the Rust language, check out rust-lang.org. The language server for Rust I use is rust-analyzer. There was RLS before, but it got deprecated in favour of rust-analyzer. Check out installation info for the binary or install via Rustup:
rustup component add rust-analyzer
Zig
To learn more about the Zig language, check out ziglang.org. The language server for Zig is called ZLS. Make sure to always keep the version of Zig and ZLS in sync. The version at the time of writing was 0.13.0.
# or check out binary release on github.com/zigtools/zls
git clone https://github.com/zigtools/zls
cd zls
zig build -Doptimize=ReleaseSafe
V
V is another rather young programming language, that aims to be simple, fast and safe. Check out vlang.io for more. VLS is the language server for V.
# Since V 0.3.1 the language server can simply be installed via
v ls --install