関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
今更なんですが、最近 Helix エディタの存在をしりました。便利ですねーこのエディタ。
vimライクで、デフォルトでLSPとかtree-sitterとか組み込まれているのでターミナルでコード書くのにちょうど良い。バイナリ一個で動いてくれるのも良し。
基本的な操作感は同じなのですが、根底の思想がvimが「モーションが先に来る」のに対して、helixの方は「選択が先に来る」という部分で、まだまだ頭と手がマッチしていない状態です。特によく使う行頭と行末へ移動のコマンドが中々慣れない。。どうしても 0 って打ってしまう。
そんなわけで、以下はAIさんに作ってもらったチートシートみたいなものです。自分用ですが、いつでも見れるようにここにメモメモ。。
まだまだ、発展途上のエディタだと思いますが、使いこなせるようになっておきたい。
vimの:terminalが無いので、個人的にここは不便に感じていますが、zellijと一緒に利用すればオッケイですね。
チュートリアルは
$ hx --tutor
で起動出来る。
Helix エディタ チートシート (Vim使い向け)
🔑 Vimとの重要な違い
Selection → Action の順序(Vimの逆)
- Vim:
dw (delete word) → 動作 → 対象
- Helix:
wd → 対象を選択 → 動作を実行
f/F/t/T は行を超える
複数カーソルがビルトイン
モードの違い
- 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 |
すべての子ノード |
🔍 検索 (Search)
| キー |
動作 |
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 |
閉じる |
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。