翻訳者注:私が翻訳した Helix Book からの抜粋、全文書は こちら にあります。
LSP としてマークされたマッピングは、このファイルタイプの言語サーバーを必要とします。
TS としてマークされたマッピングは、このファイルタイプの tree-sitter 構文サポートを必要とします。
ノーマルモード#
カーソル移動#
注意:Vim と異なり、
f
、F
、t
、T
は現在の行に限定されません。
キー | 説明 | コマンド |
---|---|---|
h , Left | 左に移動 | move_char_left |
j , Down | 下に移動 | move_line_down |
k , Up | 上に移動 | move_line_up |
l , Right | 右に移動 | move_char_right |
w | 次の単語の先頭に移動 | move_next_word_start |
b | 前の単語の先頭に移動 | move_prev_word_start |
e | 次の単語の末尾に移動 | move_next_word_end |
W | 次の WORD の先頭に移動 | move_next_long_word_start |
B | 前の WORD の末尾に移動 | move_prev_long_word_start |
E | 次の WORD の末尾に移動 | move_next_long_word_end |
t | 次の文字の前に移動 | find_till_char |
f | 次の文字に移動 | find_next_char |
T | 前の文字の後に移動 | till_prev_char |
F | 前の文字に移動 | find_prev_char |
G | nG は n 行目に移動、n は数字 | goto_line |
Alt-. | 最後のカーソル移動を繰り返す(f 、t 、m など) | repeat_last_motion |
Home | 現在の行の先頭に移動 | goto_line_start |
End | 現在の行の末尾に移動 | goto_line_end |
Ctrl-b , PageUp | 上にページアップ | page_up |
Ctrl-f , PageDown | 下にページダウン | page_down |
Ctrl-u | 上に半ページアップ | half_page_up |
Ctrl-d | 下に半ページダウン | half_page_down |
Ctrl-i | ジャンプリストの次の項目に移動 | jump_forward |
Ctrl-o | ジャンプリストの前の項目に移動 | jump_backward |
Ctrl-s | 現在の選択範囲をジャンプリストに保存 | save_selection |
テキスト修正#
キー | 説明 | コマンド |
---|---|---|
r | 1 文字に置き換える | replace |
R | コピーしたテキストに置き換える | replace_with_yanked |
~ | 選択したテキストの大文字と小文字を切り替える | switch_case |
` | 選択したテキストを小文字に設定 | switch_to_lowercase |
Alt-` | 選択したテキストを大文字に設定 | switch_to_uppercase |
i | 選択した内容の前に挿入 | insert_mode |
a | 選択した内容の後に挿入(追加) | append_mode |
I | 現在の行の先頭に挿入 | insert_at_line_start |
A | 現在の行の末尾に挿入 | insert_at_line_end |
o | 選択した内容の下に新しい行を開始 | open_below |
O | 選択した内容の上に新しい行を開始 | open_above |
. | 最後の挿入を繰り返す | N/A |
u | 修正を元に戻す | undo |
U | 修正をやり直す | redo |
Alt-u | 前の履歴に戻る | earlier |
Alt-U | 次の履歴に戻る | later |
y | 選択した内容をコピー | yank |
p | 選択した内容の後に貼り付け | paste_after |
P | 選択した内容の前に貼り付け | paste_before |
" <reg> | レジスタを選択してテキストをコピーまたは貼り付け | select_register |
> | 選択した内容をインデント | indent |
< | 選択した内容のインデントを解除 | unindent |
= | 選択した内容をフォーマット(現在はこの機能は無効) (LSP) | format_selections |
d | 選択した内容を削除 | delete_selection |
Alt-d | 選択した内容を削除するが、削除された内容をコピーしない | delete_selection_noyank |
c | 選択した内容を修正(削除して挿入モードに入る) | change_selection |
Alt-c | 選択した内容を修正(削除して挿入モードに入る)が、削除された内容をコピーしない | change_selection_noyank |
Ctrl-a | カーソル下の数字をインクリメント | increment |
Ctrl-x | カーソル下の数字をデクリメント | decrement |
Q | 選択したレジスタにマクロを録音開始 / 終了(実験機能) | record_macro |
q | 選択したレジスタから録音したマクロを再生(実験機能) | replay_macro |
選択範囲でシェルコマンドを実行#
キー | 説明 | コマンド |
---|---|---|
` | ` | 各選択内容をパイプに入れ、シェルコマンドの出力でこれらの内容を置き換える |
`Alt- | ` | 各選択内容をパイプに入れ、シェルコマンドの出力を無視する |
! | シェルコマンドを実行し、その結果を各選択内容の前に挿入 | shell_insert_output |
Alt-! | シェルコマンドを実行し、その結果を各選択内容の後に挿入 | shell_append_output |
$ | 各選択範囲をシェルコマンドにパイプで送信し、コマンドが 0 を返す選択範囲を保持 | shell_keep_pipe |
テキストを選択#
キー | 説明 | コマンド |
---|---|---|
s | 選択範囲内のすべての正規表現に一致する内容を選択 | select_regex |
S | 選択範囲内の正規表現に一致しない内容を選択 | split_selection |
Alt-s | 複数行の選択範囲で各非空行の末尾にカーソルを置く | split_selection_on_newline |
& | 列に沿って選択範囲を整列(最初に Alt-s を使用) | align_selections |
_ | 選択範囲から前後の空白を削除して選択を縮小 | trim_selections |
; | 選択範囲をカーソルまで収縮(複数カーソルの選択範囲をそれぞれのカーソルに折りたたむ) | collapse_selection |
Alt-; | 選択範囲のカーソルとアンカーを反転(Vim の o に対応) | flip_selections |
Alt-: | 選択範囲を正のテキスト方向に確保(すべての選択範囲カーソルを選択範囲の末尾に配置) | ensure_selections_forward |
, | 主選択範囲のみを保持(複数カーソル時は主カーソルに収縮) | keep_primary_selection |
Alt-, | 主選択範囲を削除(複数カーソル時は主カーソルを削除) | remove_primary_selection |
C | 次の行に選択範囲をコピー(複数カーソル時は下に同じ位置のカーソルを追加) | copy_selection_on_next_line |
Alt-C | 前の行に選択範囲をコピー(複数カーソル時は上に同じ位置のカーソルを追加) | copy_selection_on_prev_line |
( | 前の選択範囲を主選択範囲として設定(主選択範囲を後ろに移動) | rotate_selections_backward |
) | 次の選択範囲を主選択範囲として設定(主選択範囲を前に移動) | rotate_selections_forward |
Alt-( | 各選択範囲の内容を次の選択範囲の内容に置き換える(選択範囲の内容を後ろに移動) | rotate_selection_contents_backward |
Alt-) | 各選択範囲の内容を前の選択範囲の内容に置き換える(選択範囲の内容を前に移動) | rotate_selection_contents_forward |
% | ファイル全体を選択 | select_all |
x | 現在の行を選択;選択されている場合は次の行に拡張 | extend_line_below |
X | 選択範囲を行の境界に拡張し、行単位1 | extend_to_line_bounds |
Alt-x | 選択範囲を行の境界に拡張し、行単位 | shrink_to_line_bounds |
J | 選択内で行をスペースで結合 | join_selections |
Alt-J | 選択内で行を結合するが、接続部分で複数カーソルを使用 | join_selections_space |
K | 複数選択範囲内で正規表現に一致する選択範囲のみを保持 | keep_selections |
Alt-K | 複数選択範囲内で正規表現に一致する選択範囲を削除 | remove_selections |
Ctrl-c | 選択した内容をコメント / コメント解除 | toggle_comments |
Alt-o , Alt-up | 選択した内容を親構文ノードの上位に拡張 (TS) | expand_selection |
Alt-i , Alt-down | 選択した内容を構文ノードに収縮 (TS) | shrink_selection |
Alt-p , Alt-left | 構文ツリーの前の同級ノードを選択 (TS) | select_prev_sibling |
Alt-n , Alt-right | 構文ツリーの次の同級ノードを選択 (TS) | select_next_sibling |
╭─────╮ ╭─────╮ ╭─────╮
│text1│ <── backward ──│text0│── forward ──> │text1│
╰─────╯ ╰─────╯ ╰─────╯
╭─────╮
│text1│
╰─────╯
↑
backward:選択範囲を上/後ろ/逆に移動
|
╭─────╮
│text0│
╰─────╯
|
forward:選択範囲を下/前に移動
↓
╭─────╮
│text1│
╰─────╯
<div class="hljs-button {2}" data-title="コピー"></div>
テキストを検索#
デフォルトでは、検索コマンドはすべて /
レジスタで操作されます。異なるレジスタを操作するには "<char>
を使用します。
キー | 説明 | コマンド |
---|---|---|
/ | テキストを正方向に正規表現検索 | search |
? | テキストを逆方向に正規表現検索 | rsearch |
n | 次の一致する検索内容を選択(選択範囲が増加) | search_next |
N | 前の一致する検索内容を選択(選択範囲が増加) | search_prev |
* | 現在選択中のテキストを検索パターンとして使用 | search_selection |
マイナーモード#
これらのサブモードはノーマルモードからアクセスでき、通常はコマンドが終了した後にノーマルモードに戻ります。
キー | 説明 | コマンド |
---|---|---|
v | 選択(拡張)モードに入る | select_mode |
g | 移動モードに入る | N/A |
m | マッチモードに入る | N/A |
: | コマンドモードに入る | command_mode |
z | ビュー モードに入る | N/A |
Z | スティッキー ビュー モードに入る | N/A |
Ctrl-w | ウィンドウモードに入る | N/A |
Space | スペースモードに入る | N/A |
ビューモード#
ビューモードは、選択範囲を変更せずにビューをスクロールおよび操作するために使用されます。
このモードの スティッキー(Z
を押す)は持続的です:ノーマルモードに戻るには Esc
キーを使用する必要があります。テキストを単に閲覧しているときに、積極的に編集していないときに便利です。
キー | 説明 | コマンド |
---|---|---|
z , c | 現在の行を垂直に中央に配置 | align_view_center |
t | 現在の行を画面の上部に合わせる | align_view_top |
b | 現在の行を画面の下部に合わせる | align_view_bottom |
m | 現在の行を画面の中央に水平に合わせる | align_view_middle |
j , down | ビューを下にスクロール | scroll_down |
k , up | ビューを上にスクロール | scroll_up |
Ctrl-f , PageDown | 下にページダウン | page_down |
Ctrl-b , PageUp | 上にページアップ | page_up |
Ctrl-d | 下に半ページダウン | half_page_down |
Ctrl-u | 上に半ページアップ | half_page_up |
移動モード#
g
を押してこのモードに入り、異なる位置にジャンプします。
キー | 説明 | コマンド |
---|---|---|
g | gng を入力して n 行目にジャンプ2;数字を入力しない場合は 1 行目にジャンプ | goto_file_start |
e | 最後の行に移動 | goto_last_line |
f | 選択したファイルに移動3 | goto_file |
h | 現在の行の先頭に移動 | goto_line_start |
l | 現在の行の末尾に移動 | goto_line_end |
s | 現在の行の最初の非空白文字に移動 | goto_first_nonwhitespace |
t | 画面の上部の行に移動 | goto_window_top |
c | 画面の中央の行に移動 | goto_window_center |
b | 画面の下部の行に移動 | goto_window_bottom |
d | 定義にジャンプ (LSP) | goto_definition |
y | 型定義にジャンプ (LSP) | goto_type_definition |
r | 参照にジャンプ (LSP) | goto_reference |
i | 実装にジャンプ (LSP) | goto_implementation |
a | 最後にアクセスした / 候補ファイルに移動 | goto_last_accessed_file |
m | 最後に修正した / 候補ファイルに移動 | goto_last_modified_file |
n | 次のバッファに移動 | goto_next_buffer |
p | 前のバッファに移動 | goto_previous_buffer |
. | 現在のファイルの最後の修正箇所に移動 | goto_last_modification |
マッチモード#
ノーマルモードで m
を押してこのモードに入ります。 囲む と テキストオブジェクト の説明については、 使用 の関連部分を参照してください。
キー | 説明 | コマンド |
---|---|---|
m | マッチする括弧に移動 (TS) | match_brackets |
s <char> | 現在選択中の内容を <char> で囲む | surround_add |
r <from><to> | 囲まれた <from> 文字を <to> に置き換える | surround_replace |
d <char> | 囲まれた <char> を削除 | surround_delete |
a <object> | textobject テキストを削除 | select_textobject_around |
i <object> | textobject 内部のテキストを削除 | select_textobject_inner |
TODO:構文ノードを選択するマッピング([
のスーパーセット)。
ウィンドウモード#
この部分は Vim キーバインディングに似ていますが、Kakoune はウィンドウをサポートしていません。<space>w
または <Ctrl-w>
を押してこのモードに入ります。
キー | 説明 | コマンド |
---|---|---|
w , Ctrl-w | 次のウィンドウに切り替え | rotate_view |
v , Ctrl-v | 垂直に右に分割 | vsplit |
s , Ctrl-s | 水平に下に分割 | hsplit |
f | 選択した内容のファイルに水平分割で移動 | goto_file |
F | 選択した内容のファイルに垂直分割で移動 | goto_file |
h , Ctrl-h , Left | 左側の分割ウィンドウにカーソルを移動 | jump_view_left |
j , Ctrl-j , Down | 下側の分割ウィンドウにカーソルを移動 | jump_view_down |
k , Ctrl-k , Up | 上側の分割ウィンドウにカーソルを移動 | jump_view_up |
l , Ctrl-l , Right | 右側の分割ウィンドウにカーソルを移動 | jump_view_right |
q , Ctrl-q | 現在のウィンドウを閉じる | wclose |
o , Ctrl-o | 現在のウィンドウのみを保持し、他のすべてのウィンドウを閉じる | wonly |
H | 現在のウィンドウを左側に交換4 | swap_view_left |
J | 現在のウィンドウを下側に交換 | swap_view_down |
K | 現在のウィンドウを上側に交換 | swap_view_up |
L | 現在のウィンドウを右側に交換 | swap_view_right |
スペースモード#
この部分は雑多なマッピングで、主に picker です。<space>
を押してこのモードに入ります。
キー | 説明 | コマンド |
---|---|---|
f | ファイルピッカーを開く | file_picker |
F | 現在のプロジェクトディレクトリのファイルピッカーを開く | file_picker_in_current_directory |
b | バッファピッカーを開く | buffer_picker |
j | ジャンプリストピッカーを開く | jumplist_picker |
k | popup ボックスでカーソル下の項目のドキュメントを表示 (LSP) | hover |
s | 現在のドキュメントシンボルピッカーを開く (LSP) | symbol_picker |
S | ワークスペースシンボルピッカーを開く (LSP) | workspace_symbol_picker |
g | 現在のドキュメントコード診断ピッカーを開く (LSP) | diagnostics_picker |
G | ワークスペースコード診断ピッカーを開く (LSP) | workspace_diagnostics_picker |
r | シンボルをリネーム (LSP) | rename_symbol |
a | コード操作を実行 (LSP) | code_action |
' | 最後のぼやけたピッカーを開く | last_picker |
w | ウィンドウモードに入る | N/A |
p | 選択範囲の後にシステムクリップボードの内容を貼り付け | paste_clipboard_after |
P | 選択範囲の前にシステムクリップボードの内容を貼り付け | paste_clipboard_before |
y | 選択したテキストをクリップボードにコピー | yank_joined_to_clipboard |
Y | (複数選択範囲時)主選択範囲をクリップボードにコピー | yank_main_selection_to_clipboard |
R | 選択したテキストをシステムクリップボードのテキストに置き換える | replace_selections_with_clipboard |
/ | ワークスペースフォルダ内でテキストをグローバル検索 | global_search |
? | コマンドオプションボードを開く | command_palette |
ヒント:グローバル検索はコマンドライン入力を使用しますが、ぼやけたピッカーに結果を表示するため、ファイルを開いた後に
<space>'
を使用して前回の検索結果を持ち帰ることができます。
ポップアップ#
カーソル下の項目のドキュメントを表示します。
キー | 説明 |
---|---|
Ctrl-u | 上にスクロール |
Ctrl-d | 下にスクロール |
Unimpaired#
vim-unimpaired スタイルのマッピングを使用してコードナビゲーションを行います。
キー | 説明 | コマンド |
---|---|---|
[d | 前の診断に移動 (LSP) | goto_prev_diag |
]d | 次の診断に移動 (LSP) | goto_next_diag |
[D | このファイルの最初の診断に移動 (LSP) | goto_first_diag |
]D | このファイルの最後の診断に移動 (LSP) | goto_last_diag |
]f | 次の関数に移動 (TS) | goto_next_function |
[f | 前の関数に移動 (TS) | goto_prev_function |
]c | 次のクラスに移動 (TS) | goto_next_class |
[c | 前のクラスに移動 (TS) | goto_prev_class |
]a | 次のパラメータに移動 (TS) | goto_next_parameter |
[a | 前のパラメータに移動 (TS) | goto_prev_parameter |
]o | 次のコメントに移動 (TS) | goto_next_comment |
[o | 前のコメントに移動 (TS) | goto_prev_comment |
]t | 次のテストに移動 (TS) | goto_next_test |
]t | 前のテストに移動 (TS) | goto_prev_test |
]p | 次の段落に移動 | goto_next_paragraph |
[p | 前の段落に移動 | goto_prev_paragraph |
[Space | 上に新しい行を追加 | add_newline_above |
]Space | 下に新しい行を追加 | add_newline_below |
挿入モード#
デフォルトでは、挿入モードにバインドされたキーはある程度最小限です。Helix はモードエディタとして設計されており、これはユーザーエクスペリエンスと内部メカニズムに反映されています。
たとえば、挿入モードからノーマルモードに退出するまで、テキストに対する変更は保存されません。この理由から、新しいユーザーにはモードエディタの例を学ぶことを強くお勧めします。これにより、最もスムーズな体験が得られます。
キー | 説明 | コマンド |
---|---|---|
Escape | ノーマルモードに切り替え | normal_mode |
Ctrl-s | 元に戻すチェックポイントをコミット | commit_undo_checkpoint |
Ctrl-x | 自動補完 | completion |
Ctrl-r | レジスタの内容を挿入 | insert_register |
Ctrl-w , Alt-Backspace | 前の単語を削除 | delete_word_backward |
Alt-d , Alt-Delete | 次の単語を削除 | delete_word_forward |
Ctrl-u | 行の先頭まで削除 | kill_to_line_start |
Ctrl-k | 行の末尾まで削除 | kill_to_line_end |
Ctrl-h , Backspace | 前の文字を削除 | delete_char_backward |
Ctrl-d , Delete | 次の文字を削除 | delete_char_forward |
Ctrl-j , Enter | 新しい行を挿入 | insert_newline |
これらのショートカットは推奨されておらず、モードエディタに不慣れな新しいユーザーに提供されるものです。
モードエディタをより慣れて使用する場合、挿入モードでこれらを無効にするには、config.toml
に以下のコマンドを使用します:
[keys.insert]
up = "no_op"
down = "no_op"
left = "no_op"
right = "no_op"
pageup = "no_op"
pagedown = "no_op"
home = "no_op"
end = "no_op"
<div class="hljs-button {2}" data-title="コピー"></div>
選択 / 拡張モード#
v
を押してこのモードに入ったり出たりします。このモードはノーマルモードに似ていますが、任意の移動が選択範囲を拡張するように変更され、これらの選択範囲を置き換えるのではなくなります。移動も拡張に変更され、たとえば、vgl
は選択内容を行の末尾まで拡張します。
検索にも影響があります。デフォルトでは、n
と N
は現在の選択範囲を削除し、検索語の次のインスタンスを選択します。
n
または N
を押す前にこのモードを切り替えることで、現在の選択範囲を保持できます。反復検索中にこのモードを開閉することで、選択的に検索項目を選択範囲に追加できます。5
ピッカー#
ピッカーで使用されるキー。現在、これらのキーの再マッピングはサポートされていません。
キー | 説明 |
---|---|
Shift-Tab , Up , Ctrl-p | 前の項目 |
Tab , Down , Ctrl-n | 次の項目 |
PageUp , Ctrl-u | 上にページアップ |
PageDown , Ctrl-d | 下にページダウン |
Home | 最初の項目に移動 |
End | 最後の項目に移動 |
Enter | 選択した項目を開く |
Ctrl-s | 垂直に分割ウィンドウで再オープン |
Ctrl-v | 水平に分割ウィンドウで再オープン |
Ctrl-t | プレビューを切り替え |
Escape , Ctrl-c | ピッカーを閉じる |
プロンプト#
プロンプトボックス(たとえば、コマンドラインで s
を押して表示される入力待ちの位置)内で使用されるキー。現在、これらのキーの再マッピングはサポートされていません。
キー | 説明 |
---|---|
Escape , Ctrl-c | プロンプトボックスを閉じる |
Alt-b , Ctrl-Left | 前の単語に移動(ノーマルモードの b ) |
Ctrl-b , Left | 前の文字に移動(ノーマルモードの h ) |
Alt-f , Ctrl-Right | 次の単語に移動 |
Ctrl-f , Right | 次の文字に移動 |
Ctrl-e , End | 行の末尾に移動 |
Ctrl-a , Home | 行の先頭に移動 |
Ctrl-w , Alt-Backspace , Ctrl-Backspace | 前の単語を削除 |
Alt-d , Alt-Delete , Ctrl-Delete | 次の単語を削除 |
Ctrl-u | 行の先頭まで削除 |
Ctrl-k | 行の末尾まで削除 |
Backspace , Ctrl-h | 前の文字を削除 |
Delete , Ctrl-d | 次の文字を削除 |
Ctrl-s | カーソル下に挿入、将来的には Ctrl-r Ctrl-w に変更される可能性があります |
Ctrl-p , Up | 前の履歴を選択 |
Ctrl-n , Down | 次の履歴を選択 |
Ctrl-r | 選択したレジスタの内容を挿入 |
Tab | 次の補完項目を選択 |
BackTab | 前の補完項目を選択 |
Enter | 選択した項目を開く |
-
翻訳者注:
X
とx
の違いは、行を跨いで拡張する際、x
は常にカーソルを末尾に置くのに対し、X
は選択範囲の方向を認識することです。これは
line-wise:カーソルが選択範囲の下方向にある場合、選択範囲拡張後のカーソルは末尾に位置します;カーソルが選択範囲の上方向にある場合、選択範囲拡張後のカーソルは末尾に位置します。
選択範囲の方向については、私の理解を参照してください: ↩︎ -
gng
はngg
とnG
に等しく、すべて n 行目にジャンプするために使用されます。 ↩︎ -
gf
は選択した内容をファイルパスとして扱います(相対パスまたは絶対パスのいずれか);そのパスが存在しない場合、そのパスのバッファを開き、書き込むことでそのファイルを作成します(書き込まなければ作成されません)。 ↩︎