【推荐】Helix 编辑器

发布时间 2023-12-20 17:57:36作者: Tmacy

Helix简介

Helix编辑器是类似 Vim操作模式的终端文本编辑器。其具有类似Vim一样的简洁和高效的编辑方式,而且针对命令模式的交互进行了优化,参考了NeoVim和kakoune两款编辑器,注重文本选择与模块集成,能够实现开箱即用。

我之所以会关注到Helix,主要原因是Vim或者Neovim的编辑环境配置非常依赖github的各种仓库,而国内糟糕的网络环境给配置和升级编辑环境带来很多烦恼。在多次搜寻过程中,发现helix是可以满足开箱即用,且有优秀的命令模式交互界面,极大改善用户的使用体验。

image

Helix编辑器最明显的一个问题就是没有插件系统,这对于那些喜欢自己定制编辑器环境的朋友来说,不是那么友好,可玩性不高。官方确实有考虑做一个插件系统,但是优先要做的是Helix默认集成的特性已经足够好了,选择插件扩展目前优先级不是那么高。参见讨论

而那些愿意使用Helix的用户,肯定是希望不折腾的用户,默认内置的优秀功能应对一些开发环境已经足够。而且Helix运行的足够快,喜欢用终端来处理文档的用户基本不会在编辑速度上遇到问题。

本篇主要基于Helix的官方文档,介绍Helix编辑器的基本理念和使用方法,文章内容不会根据官方文档持续更新,希望关注Helix的用户可以跟踪官方网站与Github仓库

! Helix是Rust编写,属于后现代风格编辑器 ^_^

相关链接

Helix 官方网站

Helix 官方文档

Helix Github

Helix 安装

Linux平台

Linux平台上基本需要依赖每个发行版的维护,目前Helix已经支持主流的各大Linux发行版

Ubuntu

配置Helix的ppa

sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt update
sudo apt install helix

Fedora/RHEL

使用dnf直接安装

sudo dnf install helix

Arch Linux extra

使用pacman 直接安装

sudo pacman -S helix

NixOS

Helix已经在nixpkgs中,非稳定频道通常能获得最新发布版本

Helix也可以在flake中获得,使用nix develop 登录开发者终端。每个提到Master的push会用Cachix缓存。 flake配置为自动使用缓存,假设用户接受最新的第一个设置。
如果你不使用flakes,可以用 cachix 来安装配置Helix cachix use helix

Flatpak

Helix 可以在 Flathub获取:

flatpak install flathub com.helix_editor.Helix
flatpak run com.helix_editor.Helix

Snap

Helix 可以在 Snapcraft 获取:

snap install --classic helix

Helix会安装到 /snap/bin/helix/snap/bin/hx, 请确保 /snap/bin 在你的PATH中.

AppImage

Helix 可以在Linux中安装 AppImage 的镜像.
下载 Helix AppImage latest releases .

chmod +x helix-*.AppImage # change permission for executable mode
./helix-*.AppImage # run helix

macOS系统

Homebrew Core

brew install helix

MacPorts

port install helix

Windows

由于目前没有GUI工具,Helix在Windows上安装需要用到终端工具, Winget, Scoop, ChocolateyMSYS2.

Winget

Windows包管理器winget是 Windows 11 和 Windows 10 的应用安装程序。可以在 微软应用商店获得。

winget install Helix.Helix

Scoop

scoop install helix

Chocolatey

choco install helix

MSYS2

Windows 8.1 64位以上的版本:

pacman -S mingw-w64-ucrt-x86_64-helix

源码编译安装

准备工作:

从HelixGithub仓库克隆代码,本文中假设用户克隆到Linux/MacOs的~/src/或者Windows的%userprofile%\src\
主要依赖的工具:

  • Rust工具链
  • Git
  • 一个兼容C++14标准的C++编译器,例如Gcc或者Clang,用以构建tree-sitter

如果你使用musl-libc标准库,务必确保tree-sitter在编译时正确加载。

配置RUST编译参数:

RUSTFLAGS="-C target-feature=-crt-static"
  1. 克隆代码:

    git clone https://github.com/helix-editor/helix
    cd helix
    
  2. 编译构建:

    cargo install --path helix-term --locked
    

    上述命令执行完成后会得到hx可执行文件和在本地runtime目录中的tree-sitter的语法文件

? Tree-sitter 语法库可以在线获取和编译,利用hx --grammar fetch可以获得语法库,利用hx --grammar build可以编译这些语法库
它们会被部署到用户的runtime目录,runtime目录的配置可参见下文

配置 Helix的runtime文件

Linux 和 macOS

runtime目录位于Helix源码目录中,可以设置环境变量HELIX_RUNTIME指向该路径。你可以设置这个环境变量到~/.bashrc等配置中:

HELIX_RUNTIME=~/src/helix/runtime

或者也可以创建软链接

ln -Ts $PWD/runtime ~/.config/helix/runtime

Windows平台

  1. 可以利用Windows工具设置HELIX_RUNTIME环境变量
  2. 可以在命令提示符中使用setx
setx HELIX_RUNTIME "%userprofile%\helix的runtime路径"

? %userprofile%是你的用户目录地址类似与C:\Users\用户名\

%appdata%\helix\创建指向源码中runtime目录的链接:

方法 命令
PowerShell New-Item -ItemType Junction -Target "runtime" -Path "$Env:AppData\helix\runtime"
Cmd cd %appdata%\helix
mklink /D runtime "%userprofile%\src\helix\runtime"

? 在Windows中,创建一个符号链接需要获得Adminstrator权限来运行PowerShell或者Cmd

多重runtime目录

当Helix发现有多重runtime目录,会按照以下顺序来检索

  1. $CARGO_MANIFEST_DIR 目录下的runtime (这个为了开发调试Helix)
  2. 操作系统中用户配置目录下的runtime/
  3. $HELIX_RUNTIME
  4. 在编译时期设置的HELIX_DEFAULT_RUNTIME环境变量,其中配置了发行版指定路径
  5. Helix可执行文件路径下的runtime/

顺序优先级的设定会在多个路径下发现重复名称目录的情况下生效。

安装后的验证

Helix提供了一个健康检查工具,可以在安装后对状态进行检查:

hx --health

参考链接

Health check
Helix 安装文档