編集(Helix モード)¶
既定の操作は Helix 風のモード編集です。 VS Code 風に切り替える方法は 編集(VS Code モード) にあります。
モード¶
| モード | ステータスバーの表示 | 入り方 | 抜け方 |
|---|---|---|---|
| ノーマル | NOR |
起動時。Esc |
— |
| 挿入 | INS |
i a I A o O、c |
Esc |
| 選択 | SEL |
v |
v または Esc |
Helix と同じく「先に選択し、次に操作する」順で編集します。
たとえば w で単語を選び、d で削除します。
ノーマルモード¶
移動¶
| キー | 動作 |
|---|---|
h j k l(矢印キーも可) |
左 / 下 / 上 / 右へ移動。数字を前に付けると回数指定(例:5j) |
w b e(W B E) |
単語を選択しながら移動 |
Home / End |
行頭 / 行末 |
PgUp Ctrl+B / PgDn Ctrl+F |
1 画面上 / 下 |
Ctrl+U / Ctrl+D |
上 / 下へ動く。キーを離したことを伝える端末(kitty keyboard protocol に対応した端末)では、押している間だけ 1 行ずつスクロールする。それ以外の端末では半画面動き、カーソル行を画面の中央に置く |
zh / zl(Alt+PgUp / Alt+PgDn) |
画面を半画面ぶん左 / 右へスクロールする。カーソルは動かさない。左端と、一番長い行の末尾が見えるところで止まる。マウスの横ホイールと Shift + ホイールでも同じ |
G |
最後の行 |
f t F T + 文字 |
行内で文字を探す(f t は前方、F T は後方) |
mm |
対応する括弧へ |
g で始まるジャンプ¶
| キー | 動作 |
|---|---|
gg / ge |
ファイルの先頭 / 末尾 |
gh / gl |
行頭 / 行末 |
gs |
行の最初の空白でない文字 |
gt / gc / gb |
画面の上端 / 中央 / 下端の行 |
数字g |
指定した行(例:42g) |
gd / gr |
定義へ移動 / 参照の一覧 |
Ctrl+O / Ctrl+I |
飛ぶ前の場所へ戻る / 進む(最大 100 件。gd gg ge 数字g :行番号 / n N や各ピッカーが履歴に積む) |
gn / gp |
次 / 前のタブ |
選択¶
| キー | 動作 |
|---|---|
x(X) |
行を選択。続けて押すと下へ広がる |
% |
すべて選択 |
; |
選択を解除 |
Alt+; |
選択の向きを反転(カーソルと起点を入れ替える) |
v |
選択モードの切替 |
編集¶
| キー | 動作 |
|---|---|
d |
選択範囲(なければカーソルの文字)を削除してヤンク |
Alt+D |
ヤンクせずに削除 |
c |
削除して挿入モードへ。Alt+c(小文字)はヤンクしない |
y |
ヤンク(コピー) |
p / P |
カーソルの後ろ / 前に貼り付け |
R |
選択範囲をヤンクした内容で置き換え |
r + 文字 |
選択範囲の文字を、指定した文字で置き換え |
u / U |
元に戻す / やり直し |
> / < |
インデントを増やす / 減らす |
J |
行を連結 |
~ |
大文字と小文字を入れ替える |
` / Alt+` |
小文字にする / 大文字にする |
Ctrl+C |
行コメントの切替 |
検索¶
| キー | 動作 |
|---|---|
/ / ? |
前方 / 後方へ検索 |
n / N |
次 / 前の一致 |
* |
選択範囲(1 行以内)を検索語にする |
その他¶
| キー | 動作 |
|---|---|
K |
ホバー(LSP) |
]d / [d |
次 / 前の診断 |
: |
コマンドを入力する(:コマンド一覧) |
マルチカーソル¶
| キー | 動作 |
|---|---|
C |
カーソルを下の行に複製 |
Alt+C(大文字) |
カーソルを上の行に複製 |
s |
選択範囲を正規表現で分割し、一致ごとにカーソルを置く |
, |
カーソルを 1 つに戻す |
挿入・削除・c などの編集は、すべてのカーソルに適用します。
ステータスバーの右にカーソルの数が出ます。
Space メニュー¶
Space を押してから、次のキーを押します。
| キー | 動作 |
|---|---|
Space f |
ファイルを開く(Quick Open) |
Space b |
開いているバッファの一覧 |
Space e |
ファイルツリーへ移動 |
Space k |
ホバー |
Space r |
名前の変更(LSP) |
Space . |
コードアクション(LSP。診断のヒントを適用する) |
Space s / Space S |
シンボル一覧(LSP。ファイル内 / プロジェクト全体) |
Space d |
診断の一覧 |
Space / |
プロジェクト全体を検索・置換(フローティング窓。ファイルと検索) |
Space c |
行コメントの切替 |
Space t |
ターミナルの表示切替 |
Space g |
差分モード(比較元はプルリクエストの base)を開く / 閉じる |
Space G |
差分モード(比較元は HEAD)を開く / 閉じる |
Space v |
レビューのメニュー(比較元がプルリクエストの base のとき。差分モード) |
Space m |
Markdown プレビューの切替(並べて表示 → 全幅 → 閉じる) |
Space a |
現在の文脈をエージェントへ送る |
Space i |
提案パネルへ移る / 閉じる |
Space o |
カーソル位置の URL を外部ブラウザで開く |
Space y / Space p |
システムのクリップボードへコピー / から貼り付け |
Space ? |
コマンドパレット |
挿入モード¶
文字を入力します。Esc でノーマルモードへ戻ります。
| キー | 動作 |
|---|---|
Ctrl+X / Ctrl+Space |
補完を手動で出す |
Tab / Enter |
補完を確定 |
Ctrl+W / Alt+Backspace |
前の単語を削除 |
Ctrl+U |
行頭までを削除 |
補完は . などの入力や、2 文字の入力で自動的に出ます。
関数の引数などの穴埋め(スニペット)を確定すると、最初の穴が選択されます。そのまま入力すると置き換わります。Tab で次の穴、Shift+Tab で前の穴へ移ります。最後の穴(または $0)に着くか Esc で終わります。同じ番号の穴は同時に書き換わります。穴の外へカーソルを動かしても終わります。
その他のキー(矢印キー、Ctrl+Z など)は VS Code モード と同じ動作です。
キーの差し替え¶
~/.config/shijimi/config.toml の [keys.normal] [keys.insert] [keys.select] で、キーを差し替えられます。書き方は Helix の config.toml と同じです。
[keys.normal]
"C-s" = ":write" # : コマンドも書ける
"H" = "goto_line_start"
"A-j" = "move_visual_line_down"
"d" = "delete_selection_noyank"
"q" = "no_op" # キーを無効にする
[keys.select]
"j" = "extend_line_below" # 選択モードだけで差し替える
[keys.insert]
"A-j" = "normal_mode"
- キーは
C-s(Ctrl)、A-x(Alt)、S-tab(Shift)のように書きます。C-A-xのように重ねられます。特別なキーは Helix と同じ名前(retspacetabescbackspacedelinsleftrightupdownhomeendpageuppagedownF1〜F12)です。-はminus、<はlt、>はgt、+はplusと書きます。 - 値は、下の表のコマンド名か、
:から始まるコマンド(":write"など。:コマンド一覧)です。 [keys.select]は、[keys.normal]を土台にして、その上に重ねます。- 名前の無いキー(
gで始まる系列、/n、Spaceメニューなど)は、今のまま動きます。また[keys.normal.g]のような、キーを続けて押す系列の書き方はまだ使えません。 Ctrl+SCtrl+QCtrl+Pなど、どのモードでも効く操作のキーは差し替えられません。- 知らないコマンド名やキー名を書くと、起動時(と
:config-reload)にステータス行で知らせます。そのキーは既定のまま動きます。 - 安全のため、
[keys.*]は~/.config/shijimi/config.toml(とconfig.nix)からだけ読みます。プロジェクトの.shijimi/config.tomlに書いても無視します(:shなどを割り当てたリポジトリを開くだけで、プログラムが動くのを防ぐため)。 [keys.insert]には、同じコマンド名か:コマンドを書けます。そのキーでは文字が入力されなくなります。
使えるコマンド名¶
「既定のキー」は差し替えないときのキーです。
移動:
| コマンド名 | 既定のキー |
|---|---|
move_char_left / move_char_right |
h ← / l → |
move_visual_line_down / move_visual_line_up |
j ↓ / k ↑ |
move_line_down / move_line_up |
上の 2 つと同じ動き(Helix と同じ名前で書けるように) |
move_next_word_start / move_next_long_word_start |
w / W |
move_prev_word_start / move_prev_long_word_start |
b / B |
move_next_word_end / move_next_long_word_end |
e / E |
goto_line_start / goto_line_end |
Home / End |
page_up / page_down |
PgUp Ctrl+B / PgDn Ctrl+F |
jump_backward / jump_forward |
Ctrl+O / Tab Ctrl+I |
goto_last_line |
G |
move_* は、選択モードのときだけ選択を広げます。extend_* は、いつでも選択を広げます(extend_char_left extend_char_right extend_visual_line_down extend_visual_line_up extend_line_down extend_line_up extend_next_word_start extend_next_long_word_start extend_prev_word_start extend_prev_long_word_start extend_next_word_end extend_next_long_word_end extend_to_line_start extend_to_line_end)。
選択:
| コマンド名 | 既定のキー |
|---|---|
extend_line_below |
x |
extend_to_line_bounds |
X |
select_all |
% |
collapse_selection |
; |
flip_selections |
Alt+; |
select_mode |
v(選択モードの切替) |
normal_mode |
Esc |
no_op |
なし(キーを無効にする) |
編集:
| コマンド名 | 既定のキー |
|---|---|
delete_selection / delete_selection_noyank |
d / Alt+D |
change_selection / change_selection_noyank |
c / Alt+c |
yank |
y |
paste_after / paste_before |
p / P |
replace_with_yanked |
R |
undo / redo |
u / U |
insert_mode / append_mode |
i / a |
insert_at_line_start / insert_at_line_end |
I / A |
open_below / open_above |
o / O |
indent / unindent |
> / < |
join_selections |
J |
switch_case |
~ |
switch_to_lowercase / switch_to_uppercase |
` / Alt+` |
toggle_comments |
Ctrl+C |
数字を前に付ける回数指定と、複数のカーソルへの適用は、差し替えたキーでも同じように働きます。