Created
September 10, 2024 10:09
-
-
Save adminy/3975f9ad2de192f3428707495ecd51fb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
theme = "dark_plus" | |
[keys.normal.'space'.'space'] | |
# Extensions using custom script | |
# Interactive search in current working directory | |
s = ":pipe-to helix-ext search --current" | |
# Interactive search in current working directory (include path name in the search) | |
S = ":pipe-to helix-ext search --current-inc-path" | |
# Interactive search in current git directory | |
w = ":pipe-to helix-ext search --workspace" | |
# Interactive search in current git directory (include path name in the search) | |
W = ":pipe-to helix-ext search --workspace-inc-path" | |
# Interactive search in current buffer | |
b = ":pipe-to helix-ext search --buffer" | |
# Git status | |
m = ":pipe-to helix-ext git --status" | |
# Git blame | |
B = ":pipe-to helix-ext git --blame" | |
# Git browse github repo using default browser | |
O = ":pipe-to helix-ext git --browse" | |
[keys.normal] | |
A-up = ["extend_to_line_bounds", "delete_selection", "move_line_up", "paste_before"] | |
A-down = ["extend_to_line_bounds", "delete_selection", "paste_after"] | |
C-p = ["normal_mode", "file_picker"] | |
C-x = ["normal_mode", ":wq"] | |
C-f = ["normal_mode", "search"] | |
C-z = ["normal_mode", "earlier"] | |
# quick iteration on config changes | |
C-o = ":config-open" | |
C-r = ":config-reload" | |
# Some nice Helix stuff | |
C-h = "select_prev_sibling" | |
C-j = "shrink_selection" | |
C-k = "expand_selection" | |
C-l = "select_next_sibling" | |
# Personal preference | |
o = ["open_below", "normal_mode"] | |
O = ["open_above", "normal_mode"] | |
# Clipboards over registers | |
x = "delete_selection" | |
p = ["paste_clipboard_after", "collapse_selection"] | |
P = ["paste_clipboard_before", "collapse_selection"] | |
# Would be nice to add ya and yi, but the surround commands can't be chained | |
Y = ["extend_to_line_end", "yank_main_selection_to_clipboard", "collapse_selection"] | |
# this makes w and b behave as they do Vim | |
w = ["move_next_word_start", "move_char_right", "collapse_selection"] | |
W = ["move_next_long_word_start", "move_char_right", "collapse_selection"] | |
e = ["move_next_word_end", "collapse_selection"] | |
E = ["move_next_long_word_end", "collapse_selection"] | |
b = ["move_prev_word_start", "collapse_selection"] | |
B = ["move_prev_long_word_start", "collapse_selection"] | |
# especially if you find having text remain selected while you have switched to insert or append mode | |
# But if you really want to get familiar with the Helix way of selecting-while-moving, comment the | |
# bindings for 'w', 'e', and 'b' out and leave the bindings for 'i' and 'a' active below. A world of difference! | |
i = ["insert_mode", "collapse_selection"] | |
a = ["append_mode", "collapse_selection"] | |
# Undoing the 'd' + motion commands restores the selection which is annoying | |
u = ["undo", "collapse_selection"] | |
# Escape the madness! No more fighting with the cursor! Or with multiple cursors! | |
esc = ["collapse_selection", "keep_primary_selection"] | |
# Search for word under cursor | |
"*" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_next"] | |
"#" = ["move_char_right", "move_prev_word_start", "move_next_word_end", "search_selection", "search_prev"] | |
# Make j and k behave as they do Vim when soft-wrap is enabled | |
j = "move_line_down" | |
k = "move_line_up" | |
# Extend and select commands that expect a manual input can't be chained | |
# I've kept d[X] commands here because it's better to at least have the stuff you want to delete | |
# selected so that it's just a keystroke away to delete | |
[keys.normal.d] | |
d = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection"] | |
t = ["extend_till_char"] | |
s = ["surround_delete"] | |
i = ["select_textobject_inner"] | |
a = ["select_textobject_around"] | |
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] | |
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] | |
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] | |
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] | |
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] | |
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "delete_selection"] | |
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "delete_selection"] | |
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "delete_selection", "normal_mode"] } | |
[keys.normal.y] | |
y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "normal_mode", "collapse_selection"] | |
j = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
down = ["select_mode", "extend_to_line_bounds", "extend_line_below", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
k = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
up = ["select_mode", "extend_to_line_bounds", "extend_line_above", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
G = ["select_mode", "extend_to_line_bounds", "goto_last_line", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
w = ["move_next_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
W = ["move_next_long_word_start", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] | |
g = { g = ["select_mode", "extend_to_line_bounds", "goto_file_start", "extend_to_line_bounds", "yank_main_selection_to_clipboard", "collapse_selection", "normal_mode"] } | |
[keys.insert] | |
C-p = ["normal_mode", "file_picker"] | |
C-x = ["normal_mode", ":wq"] | |
C-f = ["normal_mode", "search"] | |
C-z = ["normal_mode", "earlier"] | |
# Escape the madness! No more fighting with the cursor! Or with multiple cursors! | |
esc = ["collapse_selection", "normal_mode"] | |
[keys.select] | |
A-up = ["extend_to_line_bounds", "delete_selection", "move_line_up", "paste_before"] | |
A-down = ["extend_to_line_bounds", "delete_selection", "paste_after"] | |
# Muscle memory | |
"{" = ["extend_to_line_bounds", "goto_prev_paragraph"] | |
"}" = ["extend_to_line_bounds", "goto_next_paragraph"] | |
0 = "goto_line_start" | |
"$" = "goto_line_end" | |
"^" = "goto_first_nonwhitespace" | |
G = "goto_file_end" | |
D = ["extend_to_line_bounds", "delete_selection", "normal_mode"] | |
C = ["goto_line_start", "extend_to_line_bounds", "change_selection"] | |
"%" = "match_brackets" | |
S = "surround_add" | |
u = ["switch_to_lowercase", "collapse_selection", "normal_mode"] | |
U = ["switch_to_uppercase", "collapse_selection", "normal_mode"] | |
# Visual-mode specific muscle memory | |
i = "select_textobject_inner" | |
a = "select_textobject_around" | |
# Some extra binds to allow us to insert/append in select mode because it's nice with multiple cursors | |
tab = ["insert_mode", "collapse_selection"] # tab is read by most terminal editors as "C-i" | |
C-a = ["append_mode", "collapse_selection"] | |
# Make selecting lines in visual mode behave sensibly | |
k = ["extend_line_up", "extend_to_line_bounds"] | |
j = ["extend_line_down", "extend_to_line_bounds"] | |
# Clipboards over registers ye ye | |
d = ["yank_main_selection_to_clipboard", "delete_selection"] | |
x = ["yank_main_selection_to_clipboard", "delete_selection"] | |
y = ["yank_main_selection_to_clipboard", "normal_mode", "flip_selections", "collapse_selection"] | |
Y = ["extend_to_line_bounds", "yank_main_selection_to_clipboard", "goto_line_start", "collapse_selection", "normal_mode"] | |
p = "replace_selections_with_clipboard" | |
P = "paste_clipboard_before" | |
# Escape the madness! No more fighting with the cursor! Or with multiple cursors! | |
esc = ["collapse_selection", "keep_primary_selection", "normal_mode"] | |
n = ["extend_search_next", "merge_selections"] | |
N = ["extend_search_prev", "merge_selections"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment