いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Helixエディタ(hx)のvim使ってる人向けのチートシート (hx, 自分用, AIに作ってもらった)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

今更なんですが、最近 Helix エディタの存在をしりました。便利ですねーこのエディタ。

vimライクで、デフォルトでLSPとかtree-sitterとか組み込まれているのでターミナルでコード書くのにちょうど良い。バイナリ一個で動いてくれるのも良し。

基本的な操作感は同じなのですが、根底の思想がvimが「モーションが先に来る」のに対して、helixの方は「選択が先に来る」という部分で、まだまだ頭と手がマッチしていない状態です。特によく使う行頭と行末へ移動のコマンドが中々慣れない。。どうしても 0 って打ってしまう。

そんなわけで、以下はAIさんに作ってもらったチートシートみたいなものです。自分用ですが、いつでも見れるようにここにメモメモ。。

まだまだ、発展途上のエディタだと思いますが、使いこなせるようになっておきたい。

vimの:terminalが無いので、個人的にここは不便に感じていますが、zellijと一緒に利用すればオッケイですね。

チュートリアルは

$ hx --tutor

で起動出来る。

Helix エディタ チートシート (Vim使い向け)

🔑 Vimとの重要な違い

  1. Selection → Action の順序(Vimの逆)

    • Vim: dw (delete word) → 動作 → 対象
    • Helix: wd → 対象を選択 → 動作を実行
  2. f/F/t/T は行を超える

    • Vimと異なり、現在行に限定されない
  3. 複数カーソルがビルトイン

    • 選択を分割・拡張することで自然に複数カーソル操作
  4. モードの違い

    • Normal / Insert / Select(extend) の3つが基本

📍 基本移動 (Normal Mode)

カーソル移動

キー 動作 Vimとの違い
h/j/k/l 左/下/上/右 同じ
w / b / e 次/前の単語開始 / 次の単語終了 同じ
W / B / E WORD単位の移動 同じ
f{char} 次の{char}を検索 行を超える
t{char} 次の{char}の直前 行を超える
F{char} / T{char} 後方検索 行を超える
Alt-. 最後のモーション繰り返し ;に相当

行内移動

キー 動作
Home / gh 行頭
End / gl 行末
gs 最初の非空白文字

ファイル内移動

キー 動作 Vim
gg ファイル先頭 同じ
ge ファイル末尾 G
{n}G n行目へ 同じ
Ctrl-d / Ctrl-u 半ページ下/上 同じ
Ctrl-f / Ctrl-b ページ下/上 同じ

ジャンプリスト

キー 動作 Vim
Ctrl-o 戻る 同じ
Ctrl-i 進む 同じ
Ctrl-s 現在の選択を保存 -

✏️ 編集操作 (Normal Mode)

挿入モード

キー 動作 Vim
i 選択前に挿入 同じ
a 選択後に挿入 同じ
I 行頭に挿入 同じ
A 行末に挿入 同じ
o 下に新行 同じ
O 上に新行 同じ

変更・削除

キー 動作 Vim
c 変更(削除して挿入) 同じ
d 削除(ヤンク込み) 同じ
Alt-d 削除(ヤンクなし) "_d
Alt-c 変更(ヤンクなし) "_c
r 1文字置換 同じ
R ヤンクテキストで置換 -
~ 大文字小文字切替 同じ
` 小文字化 gu
Alt-` 大文字化 gU

ヤンク・ペースト

キー 動作 Vim
y ヤンク 同じ
p 選択後にペースト 同じ
P 選択前にペースト 同じ
"{reg} レジスタ選択 同じ
Space-y クリップボードへヤンク "+y
Space-p クリップボードから貼付 "+p

Undo/Redo

キー 動作 Vim
u Undo 同じ
U Redo Ctrl-r
Alt-u 履歴を戻る g-
Alt-U 履歴を進む g+
. 最後の挿入を繰り返し 同じ

インデント・整形

キー 動作 Vim
> インデント 同じ
< アンインデント 同じ
= 整形 (LSP) 同じ
J 行を結合 同じ
Alt-J 行を結合(空白を選択) -

その他

キー 動作
Ctrl-a 数値インクリメント
Ctrl-x 数値デクリメント
Ctrl-c コメントトグル

🎯 選択操作 (Selection Manipulation)

これがHelixの最大の特徴!

基本選択

キー 動作 説明
x 現在行を選択(繰り返しで拡張) VimのV
X 行境界まで拡張 -
Alt-x 行境界まで縮小 -
% ファイル全体を選択 ggVG
; 選択を単一カーソルに縮小 -
Alt-; カーソルとアンカー反転 o
Alt-: 順方向に正規化 -

複数選択

キー 動作 説明
s 正規表現で選択内をマッチ 重要
S 正規表現で選択を分割 重要
Alt-s 改行で分割 -
C 次行に選択をコピー 下にカーソル追加
Alt-C 前行に選択をコピー 上にカーソル追加
, プライマリ選択のみ保持 -
Alt-, プライマリ選択を削除 -

選択の操作

キー 動作
Alt-- (minus) 選択をマージ
Alt-_ 連続選択をマージ
& 選択を列揃え
_ 空白をトリム
( / ) メイン選択を回転(後/前)
Alt-( / Alt-) 選択内容を回転

選択フィルター

キー 動作 説明
K 正規表現にマッチする選択を保持 grep的
Alt-K 正規表現にマッチする選択を削除 inverse grep

Tree-sitter による選択

キー 動作
Alt-o / Alt-up 親ノードに拡張
Alt-i / Alt-down 子ノードに縮小
Alt-p / Alt-left 前の兄弟ノード
Alt-n / Alt-right 次の兄弟ノード
Alt-a すべての兄弟ノード
Alt-I すべての子ノード

キー 動作 Vim
/ 正規表現検索 同じ
? 後方検索 同じ
n 次のマッチ 同じ
N 前のマッチ 同じ
* 現在選択をワード境界付きで検索 同じ
Alt-* 現在選択を検索パターンに -

Note: 検索はデフォルトで / レジスタを使用


📦 テキストオブジェクト (Match Mode)

m キーで Match Mode に入る

サラウンド操作

キー 動作 Vim
ms{char} {char}でサラウンド ys (vim-surround)
mr{from}{to} サラウンド文字を置換 cs
md{char} サラウンド文字を削除 ds

テキストオブジェクト選択

キー 動作 Vim
mi{obj} 内側を選択 i{obj}
ma{obj} 外側を選択 a{obj}
mm 対応する括弧へ %

オブジェクト例: - w = word - (, ), [, ], {, }, <, > = 括弧 - ", ', ` = クォート - f = function (TS) - t = type/class (TS) - a = argument (TS) - c = comment (TS)


🪟 ウィンドウ操作 (Window Mode)

Ctrl-w でWindow Modeに入る(Vimと同じ!)

キー 動作 Vim
Ctrl-w v 垂直分割 同じ
Ctrl-w s 水平分割 同じ
Ctrl-w h/j/k/l ウィンドウ移動 同じ
Ctrl-w H/J/K/L ウィンドウ入れ替え 同じ
Ctrl-w q ウィンドウを閉じる 同じ
Ctrl-w o 他のウィンドウを閉じる 同じ

🌐 View Mode

z でView Mode、Z でSticky View Mode

キー 動作 Vim
zz / zc 画面中央 同じ
zt 画面上部 同じ
zb 画面下部 同じ
zm 水平中央 -
zj / zk スクロール下/上 Ctrl-e / Ctrl-y

🚀 Goto Mode

g でGoto Modeに入る

キー 動作 Vim
gg ファイル先頭 同じ
ge ファイル末尾 G
gh 行頭 0
gl 行末 $
gs 最初の非空白 ^
gt / gc / gb 画面の上/中/下 H / M / L
gd 定義へジャンプ (LSP) 同じ
gy 型定義 (LSP) -
gr 参照 (LSP) -
gi 実装 (LSP) -
ga 最後にアクセスしたファイル Ctrl-^
gm 最後に変更したファイル -
g. 最後の変更箇所 '.
gn / gp 次/前のバッファ :bn / :bp
gw 単語ラベルでジャンプ -

🎨 Space Mode (Picker等)

Space でSpace Modeに入る

ファイル・バッファ

キー 動作
Space-f ファイルピッカー (LSPワークスペース)
Space-F ファイルピッカー (カレントディレクトリ)
Space-b バッファピッカー
Space-g 変更ファイルピッカー
Space-j ジャンプリストピッカー

LSP機能

キー 動作
Space-k ドキュメント表示 (Hover)
Space-r シンボル名変更
Space-a コードアクション
Space-s ドキュメントシンボル
Space-S ワークスペースシンボル
Space-d ドキュメント診断
Space-D ワークスペース診断
Space-h シンボル参照を選択

その他

キー 動作
Space-/ グローバル検索
Space-' 最後のピッカーを再表示
Space-? コマンドパレット
Space-c コメントトグル
Space-y / Space-p クリップボードヤンク/ペースト

🔢 Unimpaired スタイル

vim-unimpairedライク

キー 動作
]d / [d 次/前の診断
]D / [D 最後/最初の診断
]f / [f 次/前の関数 (TS)
]t / [t 次/前の型定義 (TS)
]a / [a 次/前の引数 (TS)
]c / [c 次/前のコメント (TS)
]T / [T 次/前のテスト (TS)
]p / [p 次/前の段落
]g / [g 次/前の変更箇所
]Space / [Space 下/上に空行追加

🎹 Insert Mode

キー 動作 Vim
Esc Normalモードへ 同じ
Ctrl-x 補完 同じ
Ctrl-r{reg} レジスタ挿入 同じ
Ctrl-w 前の単語削除 同じ
Alt-d 次の単語削除 -
Ctrl-u 行頭まで削除 同じ
Ctrl-k 行末まで削除 同じ

🔄 Select/Extend Mode

v でSelect Modeに入る

  • Normalモードと同じキーバインド
  • 移動が選択を置き換えではなく拡張する
  • vgl = 行末まで選択を拡張
  • 検索時に v を使うと、現在の選択を保持したまま次のマッチを追加

💻 コマンドモード

: でコマンドモードに入る

よく使うコマンド

:w          保存
:q          終了
:wq または :x    保存して終了
:q!         保存せず終了
:o <file>   ファイルを開く
:buffer-next    次のバッファ
:buffer-previous    前のバッファ
:tutor      チュートリアル起動

🛠️ シェル統合

キー 動作
` ` | 選択をシェルコマンドに渡し、出力で置換
`Alt- ` | 選択をシェルに渡す(出力無視)
! シェル実行、選択前に出力挿入
Alt-! シェル実行、選択後に出力挿入
$ 選択をフィルタ(終了コード0の行のみ保持)

📝 マクロ (実験的)

キー 動作 Vim
Q マクロ記録開始/停止 q{reg}
q マクロ再生 @{reg}

🎛️ Picker操作

ピッカー内で使用(リマップ不可)

キー 動作
Tab / Down / Ctrl-n 次のエントリ
Shift-Tab / Up / Ctrl-p 前のエントリ
Ctrl-u / PageUp ページアップ
Ctrl-d / PageDown ページダウン
Enter 選択を開く
Alt-Enter バックグラウンドで開く
Ctrl-s 水平分割で開く
Ctrl-v 垂直分割で開く
Ctrl-t プレビュートグル
Esc / Ctrl-c 閉じる


参考情報


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。