Rust製のエディタHelixを紹介第二弾

:point_right: [github](https://github.com/helix-editor/helix)
:point_right: [web](https://helix-editor.com/)
:point_right: [doc](https://docs.helix-editor.com/)

:point_right: [22.12 update info](https://qiita.com/GreasySlug/items/ad4e36d46732cecac4ed)

## Summary

ver 24.3から追加されたジャンプラベル機能の例

![gw_dhc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/d8a520e5-e0ea-30c5-dba4-ed7931b5176c.png)

✅おすすめする人

- nvim/vimのライトユーザー

- pluginのエラーを見るとため息をついてしまう人

- vscodeが最近重いと感じる人

- モード系のエディタ初心者

🚫おすすめしない人

- nvim/vimのヘビーユーザー

- プラギンのエラーを見ると修正する人

- vscodeの特定の機能が必要な人

- emacsやvimのキーバインド重視派

思った以上に機能が増えたり修正されたりし、ここ数ヶ月で一気にnvim/vimの代替になりそうな気がしてきた

そこで簡易的なコードを書く時にはhelixを使うようにして操作感を手に馴染ませてきた

これにより選択モード(select/extend mode)とマイナーモードのキーコンボが編集の幅を広げることが分かった

そしてまだ足りない，操作感が悪いなあという問題の輪郭が見え始めてきた

個人的に後はプラグインができるのとomni補完とかができれば正直多くの人とまではいかないまでも，ライトユーザーにはnvim/vimの代替になると思う

私自身、nvim/vimのライトユーザーでどうしてもプラグインマネージャーを駆使して何十、何百というプラグインを管理するのが難しい上にめんどくさいという課題があった

特に、言語ではなくエディタの機能向上系のpluginは使い勝手に直結するのに、ほぼ必須なのはなんかなあといつも思っていた

deinを使いdeopleteを使い、dark poweredに染まってシスの暗黒面に落ちかけたが結局私はシスを裏切るカイロ・レンのようにHelixへ移ってしまった

## How to Install

Rustがない場合は[リリースノート](https://github.com/helix-editor/helix/releases)からダウンロードする

ダウンロードした中にruntimeのフォルダーがあるのでそれをコピーする

```bash
# cmd
xcopy /e /i runtime %AppData%\helix\runtime
# PowerShell
xcopy /e /i runtime $Env:AppData\helix\runtime
# PowerShellシンボリックリンク
New-Item -ItemType Junction -Target "runtime" -Path "$Env:AppData\helix\runtime"
# Linux/macOs
ln -s $PWD/runtime ~/.config/helix/runtime
# homebrew
brew tap helix-editor/helix
brew install helix
```

インストールが完了したら以下のコマンドができるかを確認する

```bash
hx -V # バージョン確認
hx -H # ヘルプ参照 
```

個人的にはリリースノートよりもソースコードからbuildした方が機能が豊富で良いと思う

Rustがある人はビルドするのをお勧めする

```bash
git clone https://github.com/helix-editor/helix
cd helix
cargo install --path helix-term
```

上記と同じでhelixの中にあるrutimeフォルダーをコピーする(上記のコマンドどれか)

## LSP Settings

必要な言語がある場合はその言語がまずLSPのサポートがされているかを`hx —health (lang)`を使って確認する

ここでLSPの項目がNoneになっていたらそもそもhelixでLSPを扱えないのでPRを待つか、自分で探してPRを作るしかない

ex) Erg
```sh
> hx --health erg
Configured language server: None
Configured debug adapter: None
Highlight queries: ✘
Textobject queries: ✘
Indent queries: ✘
```

今回は例として[rust-analyzerをインストールする方法](https://github.com/helix-editor/helix/wiki/How-to-install-the-default-language-servers#rust_analyzer)を説明する

[https://rust-analyzer.github.io/manual.html#installation](https://rust-analyzer.github.io/manual.html#installation)にあるようにhelixではバイナリーを利用する

なので[releases](https://github.com/rust-lang/rust-analyzer/releases)から自分の環境のバイナリーをインストールする

vscodeやrustcに入っている場合は、それがPATHにあれば恐らく機能すると思うが確証がない

windows11の人はこれを好きな所へ解凍する

解凍した.gzファイルを.exeに変換する

```bash
gzip -d rust-analyzer-versionname.gz # 解凍、7-zipでも良いし、wslで開いてこれをやるでもいい
mv rust-analyzer-versionname.gz rust-analyzer.exe # exeの拡張子に直す
```

私の場合は`C:\\`直下にhelix-lspのディレクトリを作成してその中に入れている

次に、それをPATHに追加するので、`環境変数の編集`の`Path`の`新規`で先ほどのディレクトリを追加する

```sh
C:\helix_lsp\elixir
C:\helix_lsp\rust-analyzer # rustはこれ
# python-lsp-seaverはpip installで入れれるので自分の環境に合わせてインストールする
```

Linuxやmacosの人はcurlが使えるので以下のコマンドで`.local`に入れることもできる

```sh
# linux/macos
mkdir -p ~/.local/bin
curl -L https://github.com/rust-lang/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > ~/.local/bin/rust-analyzer
chmod +x ~/.local/bin/rust-analyzer
```

ログアウトしてサインインし直す

バージョンが表示されるようになったら成功

```sh
rust-analyzer.exe --vesion
rust-analyzer --version
```

ここでバージョンが出せなかったらバイナリーの解凍ができていないか、PATHを通せていないかのどちらかだと思うので重点的に見直す

最終的に以下のような形になっていればいい

```bash
> hx --health rust
Configured language server: rust-analyzer
Binary for language server: C:\helix_lsp\rust-analyzer\rust-analyzer.EXE
Configured debug adapter: codelldb # デバッグ用なのでこれはなくても問題ない
Binary for debug adapter: C:\helix_lsp\codelldb-x86_64-windows\extension\adapter\codelldb.EXE
Highlight queries: ✔
Textobject queries: ✔
Indent queries: ✔
```

## Setting

設定が必要ファイルは`config.toml`と`languages.toml`の二つ

### config.toml

hxでhelixを起動し、`:config-open`ですぐに開くことができる

とりあえず下のをコピペするだけで良い

```toml
# 任意のテーマ
theme = "base16_transparent"

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

[keys.insert]
j = { j = "normal_mode"} # jjでノーマルモードへ戻る
# C: Ctrl, S: Shift, A: Alt それぞれの接頭辞
# "C-c" = "normal_mode" # Ctrl-cでノーマルモードへ戻る
```

保存されている場所は以下の場所へ自動的に作られる

```sh
# windows10
~\AppData\Roming\helix\config.toml
# linux\macOS
~/.config/helix/config.toml
```

エラーが発生したりクラッシュした際にはhelixのログを見ることもできる

再現性がある場合には特に以下の引数をつけてファイルを開くことで詳細なログを取ることができる

```sh
hx -v filename
hx -vv filename
hx -vvv filename # 一つ増えるごとにログが詳細になっていく
```

これも`:log-open`で開くことができる

これが保存される場所は先ほどとは異なる場所に保存される

```bash
# windows
~\AppData\Local\helix\helix.log
# linux/macOS
~/.cache/helix/helix.log
```

### 詳細な設定

設定のコメントを消したい場合はぜひ選択モードと正規表現を使いマルチカーソル + インサートモードで選択削除を試してみてください

%(全体選択) -> s(select regex) -> # \S+(正規表現で選択) -> enter(選択確定) -> d(delet selection) -> ,(keep primary selection)

```toml
theme = "base16_transparent" # 任意のテーマ

[editor]
true-color = true # デフォルトがfalaseなのでこれをtrueにする、これのせいでテーマが上手く機能しない
rulers = [80] # ルーラーを設定できる、カラーはテーマ依存になるので細かい設定をしたければ自分でテーマを編集する必要がある
cursorline = true # これもデフォルトでfalseなのでtrueにするとlihgtlineみたいな見た目になる
color-modes = true # ステータスラインにモードごとに色が表示されるようにする,テーマ依存なので色が変になったらテーマが対応していないので注意が必要
auto-completion = true # 任意のキーで補完をしたい人はfalseにする
auto-save = true # これも任意で保存したい人はfalseにする

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

# デフォルトのこれで個人的には良い気がする
[editor.statusline]
left = ["mode", "spinner"]
center = ["file-name"]
right = ["diagnostics", "selections", "position", "file-encoding", "file-line-ending", "file-type"]
separator = "│" # 正直わかっていない
# 左下のモード名を任意の文字列に変えられる．ここで絵文字を使っても面白いかも
mode.normal = "NOR"
mode.insert = "INS"
mode.select = "SEL"

[editor.file-picker]
max-depth = 6 # pickerで検索するフォルダーの深さ
hidden = false # 隠しファイル・フォルダーを検索しない

[editor.whitespace.render]
space = "all" # "all"か"none"の2択しかない
tab = "all"
newline = "all"

[editor.whitespace.characters]
space = "·"
nbsp = "⍽"
tab = "→"
# newline = "↲"
newline = "✔" # やろうと思えばこういうのもできる

[editor.indent-guides]
render = true # 個人の好みで、スペースよりもガイド派はこちらをtrueにする
character = "|" # バーティカルバーも好きにできるので:とかにしても良いかも

[editor.soft-wrap]
enable = true # ソフトラップによる改行を追加
# よくわかっていない
max-wrap = 20 # increase value to reduce forced mid-word wrapping
max-indent-retain = 20 # 改行ごのインデントの数
wrap-indicator = ""  # ソフトラップ改行したところの改行を表示

[editor.lsp]
display-inlay-hints = true # 型を表示

[editor.inline-diagnostics]
cursor-line = "hint" # エラーメッセージなどをインラインにする

[keys.insert]
j = { j = "normal_mode" } # jjでノーマルモード
C-space = "completion" # Ctrl + spaceで補完

[keys.normal]
ret = ["open_below", "normal_mode"] # ノーマルモードでもenterで改行
backspace = "delete_char_backward" # 簡易的な一文字削除もできる
tab = ":bn" # tabで次のバッファーへ移動
S-tab = ":bp" # Shift + tabで前のバッファーへ移動
```

ステータスラインはnvim/vimのlightlineのようなシンプルなデザインで個人的には気に入っている

![normal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/2a89866a-9536-ef2d-bc27-acc54a2e96bd.png)

![insert.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/22615e43-dba5-a2fc-9cbe-605777aacca4.png)

![select.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/5eca920b-a768-73fc-82a6-2fc6b437b53b.png)

もっと修飾できるようにしているところらしい

カスタマイズ性が向上するのは非常に良いと思うが、テーマのメンテナンスが増えてしまう

これら新しいUIの変更があった際にはテーマに変更が反映されておらず、透明になってしまうのが今の問題になっている

実際、いくつかのテーマがすでに透明でメンテナンスされていないので注意が必要になる

### langueages.toml

[helixのgithubにあるlanguages.toml](https://github.com/helix-editor/helix/blob/master/languages.toml)から好きな言語をコピーして，新しくlanguages.tomlをconfig.tomlと同じディレクトリへ作成して貼り付けるだけ

よく見かける質問としてはデフォルトのじゃないLSPやフォーマッターを変えたいというのがある

その場合は以下のように好きに自分のを設定すればいいだけになる

```toml
[[language]]
name = "language"
language-server = { command = "another" }
formatter = { command = "name", args = ["arg00", "arg01"] }

# python
[[language]]
name = "python"
roots = ["pyproject.toml"]
language-server = { command = "pyright-langserver", args = ["--stdio"] }
config = {} # <- this is the important line
```

作業しているディレクトリごとに設定ファイルを変えたい場合は`.helix/languages.toml`を作成すると個別に対応できる

全体のconfigファイルだとこんな感じで`ruff`を使う

```toml
[[language]]
name = "python"
language-servers = [ "ruff" ]
auto-format = true

[language-server.ruff]
command = "ruff"
args = ["server"]
```

特定のディレクトリで`pylyzer`を使う場合

`.venv`が既にあり、pylyzerがインストールされている前提

```toml
# .helix/lauguages.tomlを配置
[[language]]
name = "python"
language-servers = [ "pylyzer" ]
```

![スクリーンショット 2025-02-14 235357.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/76bf2bcc-fe96-4ff7-b92c-cd6ca6239fec.png)

## Favorite Points for Me

個人的にhelix editorが好きな点は以下の通り

- 設定が他のエディタに比べて少ない
    - config.toml
    - language.toml
- 取り出してすぐに使える
    - tree-sitter
    - picker
    - LSP
- モーダルエディタ
    - normal
    - select
    - insert
    - command

### 個人的なランク付けマイナーモード

1. Space
2. Unimpaired
3. Commands
4. Goto
5. Window
6. Match
7. (Sticky)View

### Space Mode

https://docs.helix-editor.com/master/keymap.html#space-mode

本格的に使うようになってから特に使うようになった目玉の機能

- Space+f/F: ファイルの曖昧検索
- Space+b/B: バッファー検索
- Space+a: コードアクション(クイックフィックス)
- Space+/: グローバル検索
- Space+k: ドキュメント参照
- Space+d: エラー診断検索
- Space+r/R リネーム
- Space+s/S: シンボルピッカー
- Space+w: 単語ジャンプ(vimのhopみたいなの)

![file picker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/442168b7-5b2a-cf2f-e30d-af85cd4912d7.png)

![doc ref.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/fb50b3fd-5a80-12c1-8e2f-aed02e77645b.png)

特にこれら機能が簡単にキーバインドされているおかげですぐにこれらを実行できるのが思っていた以上に自分の操作感の向上につながった

helix(kakue)ではShiftやCtrl、Altといった修飾キーを多用しないということがキーバインドのブレインストーミングでよく上がる

これはまさにキーコンボでこれらを行うというの例の一つになると思う

これらをVSCodeでやろうとすると`Ctrl+p`や`Ctrl+.`など小指で同時に押さえることにより思った以上に手の負荷がかかってしまう

これがきっかけでhelixのスペースモードのキーバインドをそのままvscodeに移植して活用している

実際に移植してから手の疲れが減ったのでお勧めする

これは副次的だが、`zellij`や`tumux`，`i3wm`みたいなのを使っているとどうしてもAltやCtrlの一部が優先的に拾われることがある

それで意図しない動きになるときがあるので、修飾キーが多用されないのは個人的には良いと思っている

### Unimpaired Mode

https://docs.helix-editor.com/master/keymap.html#unimpaired

[vim-unimpaired]([https://github.com/tpope/vim-unimpaired](https://github.com/tpope/vim-unimpaired))の機能が元になっている

この中の`d/D`の`Diagnostic`が非常に良く役立つ

これをとりあえず押してエラーの箇所へ移動するのに使う

欲を言えばwarningとerrorなどを分けて移動できれば良いなあと思う

この診断移動以外は正直`Goto Mode`に近いので私は`Goto Mode`にリマッピングしている

g+f/Fで関数移動，g+p/Pでパラグラフ移動など

### Match Mode

かなり便利だが使いこなせていないモードの一つ

vim/nvimのeasymotionに近い機能を持つ

これは選択モードにすぐに移行できかつ、指定する範囲をテキストオブジェクトで限定できる

現在いる関数やクラスで変更したいときはこれを使って編集した方が効率的である

分かっていてもどうしてもwとかfで細かい移動をしてしまう

vim/nvimでもそうだが，テキストオブジェクトを扱えるようになると途端にvim/nvimの編集力の凄さが分かってくる

このモードもそれにあたる

このモードをマスターすればかなりhelix editorの使い心地が変わってくる

### Commands Mode

https://docs.helix-editor.com/master/commands.html

基本的には保存や設定、画面の分割などに利用している

また`:sh`を良く使っており、外部のフォーマッターやリンターなんかを使ったりするのに役立っている

一応`[[languages]]`でも各言語ごとに設定できるので必要はないが、めんどくさい時には`sh python black .`とか`cargo check`とか書き捨てコードで使ったりしている

`:sh`は特に使い勝手が良く面白い使い方としては`:sh gh repo view —web`でgithub cliを利用しウェブを起動してリポジトリを表示するとかができる

helixのメンテナーの方がそれをキーバインド化しているのを見かけて確かにこんな使い方もできるなあと感心していた

個人的にはリマップしてよく使ったりしている

`:next_buffer`をtabにしたり

 ⇒ `tab = ":next_buffer"`

`:prev_buffer`をShift+tabにしたり

 ⇒ `"S-tab" = ":prev_buffer"`

`:bc(:buffer-close)`みたいな略型でリマップもできる

⇒ `space = { c = [":w", ":fmt", ":bc"] }`

いろいろと再マッピングのしがいがあり、考える余地をまだたくさん残している箇所になる

[Discussions](https://github.com/helix-editor/helix/discussions?discussions_q=keymap), [Brain streaming](https://github.com/helix-editor/helix/issues/165)で複数のコマンドをつなげたリマップは非常に参考になる

### Goto Mode

思った以上に便利な機能

前回紹介したときにはhelix editorをコードを眺めるように利用していたためこれら編集に使うためのモードの優先順位が低かった

だが、ターミナルのメインエディタとして使い始めると思った以上にこの移動が役立つ

g+g(ファイルの開始), g+e(ファイルの最後), g+s(行頭), g+l(行末)のは無論のこと

- g+d: 定義へ移動
- g+i: 実装へ移動
- g+r: 参照へ移動

これらLSPをフルに活用した移動が思っている以上に楽に使えるのが良かった

例えばvscodeだとF12だったりCtrl+F12だったりとファンクションキーはなかなか覚え辛い

そのうえ左右の小指を同時押しで酷使したりする

だが、helixではg+で実行でき、しかもgを押した段階でポップアップにより次のキーコンボを教えてくれるのですぐに覚えられる

これもスペースモード同様にvscodeに移植した

ただ、`unimpaired`と「移動」という機能が被って良く間違えることが多い

### Window Mode

画面を分割を複数すると画面の切り替えや画面移動がどうしても必要になりこれをよく使う

ただこれはCtrl+wとCtrlを押さないといけないのがまだ改善の余地ありだと思うところ

Space+wもあるが私はそれを:wにリマップしてしまっているので思ったいたより面倒になった

ただそこからの使いやすさは良いと思う

Shift＋hjklで入れ替え、hjklで画面移動、Ctrl+fdbuで画面スクロールになっており、一貫性がありわかりやすいと思う

### (Sticky)View Mode

使い始めた頃はこれを多用してコードを眺めるときに使っていたが、unimpairedでワーニングやエラーの移動したり単純にCtrl+fやCtrl+dなどを覚えてしまいあまり使わなくなってしまった

思い出したように眺める際にticky View Modeを使い本当にView Mode単体は使わない

## Base Mode

### Normal Mode

各モードの起点になるモードで，ここはnvim/vimと大差がないので早く慣れると思う

ただ，デフォルトの移動で選択モードにもなるので半分選択モードと被っている

`spece`や`[`, `g`とかのマイナーモードに移行するためのキーを覚えれば問題ないと思う

### Insert Mode

Normal modeからのInsert modeは遷移が分かりやすくnvim/vimと大きく差がない

だが，行末の改行が一文字として扱われるため，行末へ移動したら`i(nsert)`をしないと次の行頭に入力してしまうことになる，削除も似た感じ

なのでSelect Modeと組み合わせたときにの扱い辛さが一番慣れが必要になる

ただ，慣れればかなり操作がしやすくなる

「選択して削除」，「選択して置換」といったように選択からの変更という日本語の並びに近いので脳みそで呪文みたいに唱えながら操作すると覚えやすい

### Select/Extend Mode

Helixと言えばこのモードでありこれがneovim/vimとの大きな違いとなるモード

思っていた以上に慣れれば使いやすい

編集がこれを経由するおかげでしやすい

ただ、移動系がデフォルトで選択になるのがいまだに使い慣れず、セミコロンで縮小するが使いにくいなあと思っている

これの最大のポイントは`s`で選択することができ、マルチカーソルにすることができる点である

私はまだ使いこなせていないのはここでになる

Matchモードで関数やクラスで選択した後にsからの編集がはかどる

前述した通りvim/nvimもそうだが、テキストオブジェクトを扱えるようになると格段に編集速度が速くなる

helix editorではこのテキストオブジェクトにもLSPが使われているのでこれにより拡張されたテキストオブジェクトが使える

その上で`s`のselectが使えるようになると選択モードのありがたみが増してくる

例えば関数内の変数を置換をしたければ以下のように範囲を決めてできる

1. `mif`で関数を選択
2. `s`で正規表現を利用し範囲選択
3. `c`で確定選択範囲を削除し，インサートモードへ移行
4. 単語を入力
5. `;`でマルチカーソルを終了

この正規表現というところが味噌になる

これでいわゆる曖昧検索みたいなことを正規表現で実現できる

なので変数名とその変数名のタイポした微妙にずれた変数とか，複数のダブルクォーテーションで囲まれた文字などを簡単に指定することができる

そこにカーソルが挿入されるので，そこからさらにテキストオブジェクトを使って範囲を指定したりすることができるので更に拡張した範囲を編集することができる

私も初めはvim/nvimの矩形選択や単純な置換の方が扱いやすいと思っていた

だが，このマルチカーソル機能を使えるようになってから明らかにこちらの方が使い勝手が良いことに気づけた

もちろん正規表現やテキストオブジェクトを覚える手間はかかるが，その分のリターンを得ることができるようになる

## Bad Points

- プラグインがいまだに作れない

理由としては元にしていたwasmのフレームワークが閉じてしまったため、作っていた実装が無駄になってしまったという経緯がある

[~~議論中~~ 議論終了](https://github.com/helix-editor/helix/discussions/3806)した

schemeみたいな言語に傾いているっぽい?

前に読み間違えてwasmでほぼ確定と書いていたけど間違い

スクリプトMLライクな書きやすさ重視の実装と，Rustベースのパフォーマンス重視の実装を作る予定でどちらもwasmを実行できるようにするらしい

- Omni補完系ができない

私は結構走り書きやmarkdown用のエディタとして使ったりするのだが単語レベルの補完がないと非常につらい

LSPがあればそのワークスペース内のみで補完をすることができるが、その都度何かしら環境が必要になるうえ，変数としてじゃないと補完が効かない

~~[一応PRは作られており](https://github.com/helix-editor/helix/pull/4816)、出来上がりつつある~~

どうしてもLSPのようなものじゃないと大量の文字列があるときに処理コストがかさむので既存のregex系のアプローチだとダメ見たい

[テキスト補完用のLSP](https://github.com/estin/simple-completion-language-server)もできたのでプレーンテキストなどでこのLSPを起動するみたいなアプローチになるのかも

- Pop-upが見づらい

マイナーモードやコマンドモードのヘルプにはボーダーラインがあり見やすい

だが、内容が場所寄って変化する補完のポップアップやエラーメッセージのポップアップにはボーダーラインがつけられない(個人でこれの修正を試験的にやっている人がいて，それを見る限りは背景とボーダーラインがつけられるようになっている)

そのため、その行のコードが長いと同化してどこが切れ目かがわかりにくいなどの問題がある

一応背景はつけられるが文字ごとの背景なので少し見栄えが悪くなってしまう

加えてガターとステータスラインの●の背景にも追加されてしまう

![diagnostic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/9ee3cbb9-5dbf-90b9-4c22-f618065819cd.png)

~~加えて、LSPのメッセージは常に上に表示される~~
~~これはエラーなどを見る時に上のメッセージとエラーが出ている行が絶妙に離れているため見にくい~~
~~ちなみに白いエラーメッセージの下の`a local variable...`もLSPのメッセージである~~
~~このように、コードとメッセージが被って見にくかったり、そもそもカーソルが見えなくなったりしてimportを書くときは地獄になる~~
~~一応[インラインのエラーメッセージ](https://github.com/helix-editor/helix/pull/6417)などができつつある~~

`inline-diagnostics`が[マージ](https://github.com/helix-editor/helix/commit/107cdf3e43fef79d36a0bdc8b59327abe85472c9)されました

```toml:config.toml
[editor.inline-diagnostics]
cursor-line = "warning"
# other-lines = "disable" # warning"
# prefix-len = 1
# max-wrap = 20
# max-diagnostics = 10
```

これを追記することで写真のようにinlineで診断が表示されるようになる

![inline-dig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/8d77aecb-bb05-066a-3138-00c76944fa33.png)

## Conclusion

個人的にhelixが大きく化けてもはやメインのエディタになりつつある

ただ、所々がまだ使いにくくvscodeやpluginを備えたvim/nvimにはまだ追いつけていない感が否めない

ただ、vim/nvimのライトユーザーはHelixに乗り換えても大丈夫なくらいには機能が豊富になっている

問題点が割と自分の中だとくっきりしているのでこれらが修正される、またはpluginで調節できるようになった段階でVSCodeから移行もありだなあと思っているくらい

vimの操作感に近い[コンフィグファイル](https://github.com/LGUG2Z/helix-vim)や[フォーク](https://github.com/usagi-flow/evil-helix)があるのでvimmerは一見の余地あり