diff options
Diffstat (limited to 'modules/by-name/fi')
16 files changed, 1695 insertions, 0 deletions
diff --git a/modules/by-name/fi/fish/config/01_show-task.fish b/modules/by-name/fi/fish/config/01_show-task.fish new file mode 100644 index 00000000..21db1112 --- /dev/null +++ b/modules/by-name/fi/fish/config/01_show-task.fish @@ -0,0 +1,20 @@ +#!/usr/bin/env fish + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +# Display current tasks +test -z "$NVIM"; and task next + +# Empty the default greeting +set --global fish_greeting "" + +# Set a nice theme +fish_config theme choose ayu diff --git a/modules/by-name/fi/fish/config/keybindings/00__start.fish b/modules/by-name/fi/fish/config/keybindings/00__start.fish new file mode 100644 index 00000000..75227ef1 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/00__start.fish @@ -0,0 +1 @@ +bind --erase --all diff --git a/modules/by-name/fi/fish/config/keybindings/01_insert.fish b/modules/by-name/fi/fish/config/keybindings/01_insert.fish new file mode 100644 index 00000000..984e0e21 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/01_insert.fish @@ -0,0 +1,86 @@ +bind --preset --mode insert ctrl-y yank +bind --preset --mode insert alt-y yank-pop +bind --preset --mode insert right forward-char +bind --preset --mode insert left backward-char +bind --preset --mode insert ctrl-right forward-token +bind --preset --mode insert ctrl-left backward-token +bind --preset --mode insert pageup beginning-of-history +bind --preset --mode insert pagedown end-of-history +bind --preset --mode insert ctrl-x fish_clipboard_copy +bind --preset --mode insert ctrl-v fish_clipboard_paste +bind --preset --mode insert tab complete +bind --preset --mode insert ctrl-i complete +bind --preset --mode insert ctrl-s pager-toggle-search +bind --preset --mode insert shift-tab complete-and-search +bind --preset --mode insert shift-delete history-delete or backward-delete-char +bind --preset --mode insert down down-or-search +bind --preset --mode insert up up-or-search +bind --preset --mode insert shift-right forward-bigword +bind --preset --mode insert shift-left backward-bigword +bind --preset --mode insert alt-b prevd-or-backward-word +bind --preset --mode insert alt-f nextd-or-forward-word +bind --preset --mode insert alt-right nextd-or-forward-word +bind --preset --mode insert \e\[1\;9C nextd-or-forward-word +bind --preset --mode insert alt-left prevd-or-backward-word +bind --preset --mode insert \e\[1\;9D prevd-or-backward-word +bind --preset --mode insert alt-up history-token-search-backward +bind --preset --mode insert alt-down history-token-search-forward +bind --preset --mode insert \e\[1\;9A history-token-search-backward +bind --preset --mode insert \e\[1\;9B history-token-search-forward +bind --preset --mode insert alt-. history-token-search-backward +bind --preset --mode insert alt-l __fish_list_current_token +bind --preset --mode insert alt-o __fish_preview_current_file +bind --preset --mode insert alt-w __fish_whatis_current_token +bind --preset --mode insert ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode insert ctrl-c clear-commandline +bind --preset --mode insert ctrl-u backward-kill-line +bind --preset --mode insert ctrl-k kill-line +bind --preset --mode insert ctrl-w backward-kill-path-component +bind --preset --mode insert end end-of-line +bind --preset --mode insert home beginning-of-line +bind --preset --mode insert alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode insert ctrl-d delete-or-exit +bind --preset --mode insert alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode insert f1 __fish_man_page +bind --preset --mode insert alt-h __fish_man_page +bind --preset --mode insert alt-p __fish_paginate +bind --preset --mode insert alt-# __fish_toggle_comment_commandline + +bind --preset --mode insert ctrl-e edit_command_buffer + +bind --preset --mode insert '' self-insert +bind --preset --mode insert space self-insert expand-abbr +bind --preset --mode insert \; self-insert expand-abbr +bind --preset --mode insert \| self-insert expand-abbr +bind --preset --mode insert \& self-insert expand-abbr +bind --preset --mode insert \> self-insert expand-abbr +bind --preset --mode insert \< self-insert expand-abbr +bind --preset --mode insert shift-enter 'commandline -i \\n (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert alt-enter 'commandline -i \\n (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert \) self-insert expand-abbr +bind --preset --mode insert ctrl-space 'test -n "$(commandline)" && commandline -i " " (commandline --search-field >/dev/null && echo --search-field)' +bind --preset --mode insert shift-space 'commandline -i " " (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert enter execute +bind --preset --mode insert ctrl-j execute +bind --preset --mode insert ctrl-m execute +bind --preset --mode insert ctrl-enter execute + +bind --preset --mode insert ctrl-n accept-autosuggestion +bind --preset --mode insert delete delete-char +bind --preset --mode insert backspace backward-delete-char +bind --preset --mode insert shift-backspace backward-delete-char +bind --preset --mode insert ctrl-h backward-delete-char + +function _bind_insert_escape + if commandline -P + commandline -f cancel + else + set fish_bind_mode default + if test (count (commandline --cut-at-cursor | tail -c2)) != 2 + commandline -f backward-char + end + commandline -f repaint-mode + end +end +bind --preset --mode insert escape _bind_insert_escape +bind --preset --mode insert ctrl-\[ _bind_insert_escape diff --git a/modules/by-name/fi/fish/config/keybindings/02_command.fish b/modules/by-name/fi/fish/config/keybindings/02_command.fish new file mode 100644 index 00000000..7cea46c5 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/02_command.fish @@ -0,0 +1,185 @@ +bind --preset --mode default h 'fish_vi_run_count backward-char' +bind --preset --mode default t 'fish_vi_run_count down-or-search' +bind --preset --mode default n 'fish_vi_run_count up-or-search' +bind --preset --mode default s 'fish_vi_run_count forward-char' +bind --preset --mode default left backward-char +bind --preset --mode default down down-or-search +bind --preset --mode default up up-or-search +bind --preset --mode default right forward-char + +bind --preset --mode default b 'fish_vi_run_count backward-word' +bind --preset --mode default B 'fish_vi_run_count backward-bigword' +bind --preset --mode default g,e 'fish_vi_run_count backward-word-end' +bind --preset --mode default g,E 'fish_vi_run_count backward-bigword-end' +bind --preset --mode default w 'fish_vi_run_count forward-word-vi' +bind --preset --mode default W 'fish_vi_run_count forward-bigword-vi' +bind --preset --mode default e 'fish_vi_run_count forward-word-end' +bind --preset --mode default E 'fish_vi_run_count forward-bigword-end' + +bind --preset --mode default ctrl-y yank +bind --preset --mode default alt-y yank-pop + +bind --preset --mode default ctrl-v edit_command_buffer + +bind --preset --mode default ctrl-right forward-token +bind --preset --mode default ctrl-left backward-token + +# bind --preset --mode default ctrl-v fish_clipboard_paste +bind --preset --mode default \",\*,y,y fish_clipboard_copy +bind --preset --mode default \",\*,Y fish_clipboard_copy +bind --preset --mode default \",+,y,y fish_clipboard_copy +bind --preset --mode default \",+,Y fish_clipboard_copy + +bind --preset --mode default pageup beginning-of-history +bind --preset --mode default pagedown end-of-history +bind --preset --mode default ctrl-x fish_vi_dec +bind --preset --mode default escape 'set -g __fish_vi_count' +bind --preset --mode default ctrl-\[ 'set -g __fish_vi_count' +bind --preset --mode default tab complete +bind --preset --mode default ctrl-i complete +bind --preset --mode default ctrl-s pager-toggle-search +bind --preset --mode default shift-tab complete-and-search +bind --preset --mode default shift-delete history-delete or backward-delete-char +bind --preset --mode default shift-right forward-bigword +bind --preset --mode default shift-left backward-bigword +bind --preset --mode default alt-b prevd-or-backward-word +bind --preset --mode default alt-f nextd-or-forward-word +bind --preset --mode default alt-right nextd-or-forward-word +bind --preset --mode default \e\[1\;9C nextd-or-forward-word +bind --preset --mode default alt-left prevd-or-backward-word +bind --preset --mode default \e\[1\;9D prevd-or-backward-word +bind --preset --mode default alt-up history-token-search-backward +bind --preset --mode default alt-down history-token-search-forward +bind --preset --mode default \e\[1\;9A history-token-search-backward +bind --preset --mode default \e\[1\;9B history-token-search-forward +bind --preset --mode default alt-. history-token-search-backward +bind --preset --mode default alt-l __fish_list_current_token +bind --preset --mode default alt-o __fish_preview_current_file +bind --preset --mode default alt-w __fish_whatis_current_token +bind --preset --mode default ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode default --sets-mode insert ctrl-c clear-commandline repaint-mode +bind --preset --mode default ctrl-u backward-kill-line +bind --preset --mode default ctrl-k kill-line +bind --preset --mode default ctrl-w backward-kill-path-component +bind --preset --mode default end end-of-line +bind --preset --mode default home beginning-of-line +bind --preset --mode default alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode default ctrl-d delete-or-exit +bind --preset --mode default alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode default f1 __fish_man_page +bind --preset --mode default alt-h __fish_man_page +bind --preset --mode default alt-p __fish_paginate +bind --preset --mode default alt-# __fish_toggle_comment_commandline +bind --preset --mode default :,q exit +bind --preset --mode default 1 'fish_vi_arg_digit 1' +bind --preset --mode default 2 'fish_vi_arg_digit 2' +bind --preset --mode default 3 'fish_vi_arg_digit 3' +bind --preset --mode default 4 'fish_vi_arg_digit 4' +bind --preset --mode default 5 'fish_vi_arg_digit 5' +bind --preset --mode default 6 'fish_vi_arg_digit 6' +bind --preset --mode default 7 'fish_vi_arg_digit 7' +bind --preset --mode default 8 'fish_vi_arg_digit 8' +bind --preset --mode default 9 'fish_vi_arg_digit 9' +bind --preset --mode default 0 'if test -n "$__fish_vi_count"; fish_vi_arg_digit 0; else; commandline -f beginning-of-line; end' + + +bind --preset --mode default x __fish_vi_delete_char +bind --preset --mode default X __fish_vi_backward_delete_char + +bind --preset --mode default --sets-mode insert enter execute +bind --preset --mode default --sets-mode insert ctrl-j execute +bind --preset --mode default --sets-mode insert ctrl-m execute +bind --preset --mode default --sets-mode insert o 'set fish_cursor_end_mode exclusive' insert-line-under repaint-mode +bind --preset --mode default --sets-mode insert O 'set fish_cursor_end_mode exclusive' insert-line-over repaint-mode +bind --preset --mode default --sets-mode insert i repaint-mode +bind --preset --mode default --sets-mode insert I beginning-of-line repaint-mode +bind --preset --mode default --sets-mode insert a 'set fish_cursor_end_mode exclusive' forward-single-char repaint-mode +bind --preset --mode default --sets-mode insert A 'set fish_cursor_end_mode exclusive' end-of-line repaint-mode +bind --preset --mode default --sets-mode visual v begin-selection repaint-mode +bind --preset --mode default g,g beginning-of-buffer +bind --preset --mode default G end-of-buffer +bind --preset --mode default \$ end-of-line +bind --preset --mode default g,\$ end-of-line +bind --preset --mode default ^ beginning-of-line +bind --preset --mode default g,^ beginning-of-line +bind --preset --mode default _ beginning-of-line +bind --preset --mode default u undo +bind --preset --mode default ctrl-r redo +bind --preset --mode default \[ history-token-search-backward +bind --preset --mode default \] history-token-search-forward +bind --preset --mode default --sets-mode insert / history-pager repaint-mode + +bind --preset --mode default delete delete-char +bind --preset --mode default backspace backward-char +bind --preset --mode default ctrl-h backward-char +bind --preset --mode default d 'fish_vi_start_operator delete' +bind --preset --mode default c 'fish_vi_start_operator change' +bind --preset --mode default y 'fish_vi_start_operator yank' +bind --preset --mode default g,\~ 'fish_vi_start_operator swap-case' + +bind --preset --mode default D kill-line +bind --preset --mode default d,\$ kill-line +bind --preset --mode default d,^ backward-kill-line +bind --preset --mode default d,0 backward-kill-line +bind --preset --mode default d,i,w kill-inner-word +bind --preset --mode default d,i,W kill-inner-bigword +bind --preset --mode default d,a,w kill-a-word +bind --preset --mode default d,a,W kill-a-bigword +bind --preset --mode default d,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection +bind --preset --mode default d,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection +bind --preset --mode default d,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,\; begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,comma begin-selection repeat-jump-reverse kill-selection end-selection +bind --preset --mode default \~ togglecase-char forward-single-char +bind --preset --mode default g,u downcase-word +bind --preset --mode default g,U upcase-word +bind --preset --mode default J end-of-line delete-char +bind --preset --mode default K 'man (commandline -t) 2>/dev/null; or echo -n \\a' +bind --preset --mode default Y kill-whole-line yank +bind --preset --mode default y,\$ kill-line yank +bind --preset --mode default y,^ backward-kill-line yank +bind --preset --mode default y,0 backward-kill-line yank +bind --preset --mode default y,i,w kill-inner-word yank +bind --preset --mode default y,i,W kill-inner-bigword yank +bind --preset --mode default y,a,w kill-a-word yank +bind --preset --mode default y,a,W kill-a-bigword yank +bind --preset --mode default y,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket fish_vi_yank_selection end-selection +bind --preset --mode default y,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket fish_vi_yank_selection end-selection +bind --preset --mode default y,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection +bind --preset --mode default y,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection +bind --preset --mode default % jump-to-matching-bracket +bind --preset --mode default f forward-jump +bind --preset --mode default F backward-jump +# bind --preset --mode default t forward-jump-till +bind --preset --mode default T backward-jump-till +bind --preset --mode default \; repeat-jump +bind --preset --mode default comma repeat-jump-reverse +bind --preset --mode default p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' yank +bind --preset --mode default P yank +bind --preset --mode default g,p yank-pop +bind --preset --mode default \",\*,p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste +bind --preset --mode default \",\*,P fish_clipboard_paste +bind --preset --mode default \",+,p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste +bind --preset --mode default \",+,P fish_clipboard_paste + +bind --preset --mode default --sets-mode replace_one r repaint-mode +bind --preset --mode default --sets-mode replace R repaint-mode + +bind --preset --mode default ctrl-a fish_vi_inc +bind --preset --mode default \# __fish_toggle_comment_commandline + +# bind --preset --mode default --sets-mode insert s delete-char repaint-mode +bind --preset --mode default --sets-mode insert S kill-inner-line repaint-mode +bind --preset --mode default --sets-mode insert C kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,\$ kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,^ backward-kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,0 backward-kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,i,w kill-inner-word repaint-mode +bind --preset --mode default --sets-mode insert c,i,W kill-inner-bigword repaint-mode +bind --preset --mode default --sets-mode insert c,a,w kill-a-word repaint-mode +bind --preset --mode default --sets-mode insert c,a,W kill-a-bigword repaint-mode +bind --preset --mode default --sets-mode insert c,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection +bind --preset --mode default --sets-mode insert c,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection +bind --preset --mode default --sets-mode insert c,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode +bind --preset --mode default --sets-mode insert c,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode diff --git a/modules/by-name/fi/fish/config/keybindings/03_visual.fish b/modules/by-name/fi/fish/config/keybindings/03_visual.fish new file mode 100644 index 00000000..3996549b --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/03_visual.fish @@ -0,0 +1,94 @@ +bind --preset --mode visual ctrl-y yank +bind --preset --mode visual alt-y yank-pop +bind --preset --mode visual right forward-char +bind --preset --mode visual left backward-char +bind --preset --mode visual ctrl-right forward-token +bind --preset --mode visual ctrl-left backward-token +bind --preset --mode visual pageup beginning-of-history +bind --preset --mode visual pagedown end-of-history +bind --preset --mode visual ctrl-x fish_clipboard_copy +bind --preset --mode visual ctrl-v fish_clipboard_paste +bind --preset --mode visual --sets-mode default escape end-selection repaint-mode +bind --preset --mode visual --sets-mode default ctrl-\[ end-selection repaint-mode +bind --preset --mode visual tab complete +bind --preset --mode visual ctrl-i complete +bind --preset --mode visual ctrl-s pager-toggle-search +bind --preset --mode visual shift-tab complete-and-search +bind --preset --mode visual shift-delete history-delete or backward-delete-char +bind --preset --mode visual down down-or-search +bind --preset --mode visual up up-or-search +bind --preset --mode visual shift-right forward-bigword +bind --preset --mode visual shift-left backward-bigword +bind --preset --mode visual alt-b prevd-or-backward-word +bind --preset --mode visual alt-f nextd-or-forward-word +bind --preset --mode visual alt-right nextd-or-forward-word +bind --preset --mode visual \e\[1\;9C nextd-or-forward-word +bind --preset --mode visual alt-left prevd-or-backward-word +bind --preset --mode visual \e\[1\;9D prevd-or-backward-word +bind --preset --mode visual alt-up history-token-search-backward +bind --preset --mode visual alt-down history-token-search-forward +bind --preset --mode visual \e\[1\;9A history-token-search-backward +bind --preset --mode visual \e\[1\;9B history-token-search-forward +bind --preset --mode visual alt-. history-token-search-backward +bind --preset --mode visual alt-l __fish_list_current_token +bind --preset --mode visual alt-o __fish_preview_current_file +bind --preset --mode visual alt-w __fish_whatis_current_token +bind --preset --mode visual ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode visual --sets-mode default ctrl-c end-selection repaint-mode +bind --preset --mode visual ctrl-u backward-kill-line +bind --preset --mode visual ctrl-k kill-line +bind --preset --mode visual ctrl-w backward-kill-path-component +bind --preset --mode visual end end-of-line +bind --preset --mode visual home beginning-of-line +bind --preset --mode visual alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode visual ctrl-d delete-or-exit +bind --preset --mode visual alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode visual f1 __fish_man_page +bind --preset --mode visual alt-h __fish_man_page +bind --preset --mode visual alt-p __fish_paginate +bind --preset --mode visual alt-# __fish_toggle_comment_commandline +bind --preset --mode visual alt-e edit_command_buffer +bind --preset --mode visual alt-v edit_command_buffer + +bind --preset --mode visual h backward-char +bind --preset --mode visual l forward-char +bind --preset --mode visual k up-line +bind --preset --mode visual j down-line +bind --preset --mode visual b backward-word +bind --preset --mode visual B backward-bigword +bind --preset --mode visual g,e backward-word-end +bind --preset --mode visual g,E backward-bigword-end +bind --preset --mode visual w forward-word-vi +bind --preset --mode visual W forward-bigword-vi +bind --preset --mode visual e forward-word-end +bind --preset --mode visual E forward-bigword-end +bind --preset --mode visual o swap-selection-start-stop repaint-mode +bind --preset --mode visual % jump-to-matching-bracket +bind --preset --mode visual f forward-jump +bind --preset --mode visual t forward-jump-till +bind --preset --mode visual F backward-jump +bind --preset --mode visual T backward-jump-till +bind --preset --mode visual \; repeat-jump +bind --preset --mode visual comma repeat-jump-reverse +bind --preset --mode visual \$ end-of-line +bind --preset --mode visual g,\$ end-of-line +bind --preset --mode visual ^ beginning-of-line +bind --preset --mode visual 0 beginning-of-line +bind --preset --mode visual g,^ beginning-of-line +bind --preset --mode visual _ beginning-of-line + +bind --preset --mode visual --sets-mode default v end-selection repaint-mode +bind --preset --mode visual --sets-mode insert i end-selection repaint-mode +bind --preset --mode visual --sets-mode insert I end-selection beginning-of-line repaint-mode +bind --preset --mode visual --sets-mode insert c kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode insert s kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default d kill-selection end-selection backward-char repaint-mode +bind --preset --mode visual --sets-mode default x kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default X kill-whole-line end-selection repaint-mode +bind --preset --mode visual --sets-mode default y fish_vi_yank_selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default \",\*,y 'fish_clipboard_copy; commandline -f end-selection repaint-mode' +bind --preset --mode visual --sets-mode default \",+,y 'fish_clipboard_copy; commandline -f end-selection repaint-mode' +bind --preset --mode visual --sets-mode default \~ togglecase-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default g,u downcase-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default g,U upcase-selection end-selection repaint-mode +bind --preset --mode visual \# __fish_toggle_comment_commandline diff --git a/modules/by-name/fi/fish/config/keybindings/04_replace.fish b/modules/by-name/fi/fish/config/keybindings/04_replace.fish new file mode 100644 index 00000000..95de4cc0 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/04_replace.fish @@ -0,0 +1,9 @@ +bind --preset --mode replace '' delete-char self-insert +bind --preset --mode replace --sets-mode insert enter execute repaint-mode +bind --preset --mode replace --sets-mode insert ctrl-j execute repaint-mode +bind --preset --mode replace --sets-mode insert ctrl-m execute repaint-mode +bind --preset --mode replace --sets-mode default escape cancel repaint-mode +bind --preset --mode replace --sets-mode default ctrl-\[ cancel repaint-mode +bind --preset --mode replace backspace backward-char +bind --preset --mode replace shift-backspace backward-char +bind --preset --mode replace \# __fish_toggle_comment_commandline diff --git a/modules/by-name/fi/fish/config/keybindings/05_operator.fish b/modules/by-name/fi/fish/config/keybindings/05_operator.fish new file mode 100644 index 00000000..67f84d82 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/05_operator.fish @@ -0,0 +1,33 @@ +bind --preset --mode operator \; 'fish_vi_exec_motion repeat-jump' +bind --preset --mode operator comma 'fish_vi_exec_motion repeat-jump-reverse' +bind --preset --mode operator d 'fish_vi_exec_motion --linewise' +bind --preset --mode operator c 'fish_vi_exec_motion --linewise' +bind --preset --mode operator y 'fish_vi_exec_motion --linewise' +bind --preset --mode operator \~ 'fish_vi_exec_motion --linewise' + +bind --preset --mode operator escape fish_vi_operator_cancel +bind --preset --mode operator ctrl-\[ fish_vi_operator_cancel +bind --preset --mode operator 1 'fish_vi_arg_digit 1' +bind --preset --mode operator 2 'fish_vi_arg_digit 2' +bind --preset --mode operator 3 'fish_vi_arg_digit 3' +bind --preset --mode operator 4 'fish_vi_arg_digit 4' +bind --preset --mode operator 5 'fish_vi_arg_digit 5' +bind --preset --mode operator 6 'fish_vi_arg_digit 6' +bind --preset --mode operator 7 'fish_vi_arg_digit 7' +bind --preset --mode operator 8 'fish_vi_arg_digit 8' +bind --preset --mode operator 9 'fish_vi_arg_digit 9' +bind --preset --mode operator 0 'fish_vi_exec_motion beginning-of-line' +bind --preset --mode operator h 'fish_vi_exec_motion backward-char' +bind --preset --mode operator l 'fish_vi_exec_motion forward-char' +bind --preset --mode operator k 'fish_vi_exec_motion up-line' +bind --preset --mode operator j 'fish_vi_exec_motion down-line' +bind --preset --mode operator b 'fish_vi_exec_motion backward-word' +bind --preset --mode operator B 'fish_vi_exec_motion backward-bigword' +bind --preset --mode operator g,e 'fish_vi_exec_motion backward-word-end' +bind --preset --mode operator g,E 'fish_vi_exec_motion backward-bigword-end' +bind --preset --mode operator w 'fish_vi_exec_motion forward-word-vi' +bind --preset --mode operator W 'fish_vi_exec_motion forward-bigword-vi' +bind --preset --mode operator e 'fish_vi_exec_motion forward-word-end' +bind --preset --mode operator E 'fish_vi_exec_motion forward-bigword-end' +bind --preset --mode operator ^ 'fish_vi_exec_motion beginning-of-line' +bind --preset --mode operator \$ 'fish_vi_exec_motion end-of-line' diff --git a/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish b/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish new file mode 100644 index 00000000..0d2672b4 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish @@ -0,0 +1,7 @@ +bind --preset --mode replace_one --sets-mode default '' 'set -g fish_cursor_end_mode exclusive' delete-char self-insert backward-char repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default enter 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default ctrl-j 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default ctrl-m 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default escape cancel repaint-mode +bind --preset --mode replace_one --sets-mode default ctrl-\[ cancel repaint-mode + diff --git a/modules/by-name/fi/fish/config/keybindings/07_others.fish b/modules/by-name/fi/fish/config/keybindings/07_others.fish new file mode 100644 index 00000000..99679857 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/07_others.fish @@ -0,0 +1,9 @@ +bind --preset --mode operator --sets-mode f f '' +bind --preset --mode operator --sets-mode F F '' +bind --preset --mode operator --sets-mode t t '' +bind --preset --mode operator --sets-mode T T '' + +bind --preset --mode f '' get-key 'fish_vi_exec_motion commandline --forward-jump=$fish_key' 'set -eg fish_key' +bind --preset --mode F '' get-key 'fish_vi_exec_motion commandline --backward-jump=$fish_key' 'set -eg fish_key' +bind --preset --mode t '' get-key 'fish_vi_exec_motion commandline --forward-jump-till=$fish_key' 'set -eg fish_key' +bind --preset --mode T '' get-key 'fish_vi_exec_motion commandline --backward-jump-till=$fish_key' 'set -eg fish_key' diff --git a/modules/by-name/fi/fish/config/keybindings/08__end.fish b/modules/by-name/fi/fish/config/keybindings/08__end.fish new file mode 100644 index 00000000..20efad65 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/08__end.fish @@ -0,0 +1 @@ +fish_vi_key_bindings diff --git a/modules/by-name/fi/fish/keymappings/default.nix b/modules/by-name/fi/fish/keymappings/default.nix new file mode 100644 index 00000000..6aed6ce4 --- /dev/null +++ b/modules/by-name/fi/fish/keymappings/default.nix @@ -0,0 +1,99 @@ +{lib, ...}: +lib.fix (self: let + escPlus = key: ''\e\[${key}''; +in { + "operator" = import ./operator.nix {inherit self;}; + "insert" = import ./insert.nix {inherit self escPlus;}; + "default" = import ./default_mode.nix {inherit self escPlus;}; + "visual" = import ./visual.nix {inherit self escPlus;}; + + "T" = { + "" = { + cmd = self.t."".cmd; + }; + }; + "f" = { + "" = { + cmd = self.F."".cmd; + }; + }; + "F" = { + "" = { + cmd = [ + "get-key" + "fish_vi_exec_motion commandline --backward-jump=$fish_key" + "set -eg fish_key" + ]; + }; + }; + "t" = { + "" = { + cmd = [ + "get-key" + "fish_vi_exec_motion commandline --forward-jump-till=$fish_key" + "set -eg fish_key" + ]; + }; + }; + + "replace" = { + "#" = { + cmd = "__fish_toggle_comment_commandline"; + }; + "ctrl-m" = { + cmd = ["execute" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "shift-backspace" = { + cmd = "backward-char"; + }; + "enter" = { + cmd = ["execute" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "" = { + cmd = ["delete-char" "self-insert"]; + }; + "backspace" = { + cmd = "backward-char"; + }; + "ctrl-j" = { + cmd = ["execute" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "ctrl-\\[" = self.replace.escape; + "escape" = { + cmd = ["cancel" "repaint-mode"]; + sets_mode_to = "default"; + }; + }; + "replace_one" = { + "" = { + cmd = [ + "set -g fish_cursor_end_mode exclusive" + "delete-char" + "self-insert" + "backward-char" + "repaint-mode" + "set -g fish_cursor_end_mode inclusive" + ]; + sets_mode_to = "default"; + }; + "enter" = { + cmd = [ + "set -g fish_cursor_end_mode exclusive" + ''commandline -f delete-char; commandline -i \n; commandline -f backward-char'' + "repaint-mode" + "set -g fish_cursor_end_mode inclusive" + ]; + sets_mode_to = "default"; + }; + "ctrl-j" = self.replace_one.enter; + "ctrl-m" = self.replace_one.enter; + "ctrl-\\[" = self.replace_one.escape; + "escape" = { + cmd = ["cancel" "repaint-mode"]; + sets_mode_to = "default"; + }; + }; +}) diff --git a/modules/by-name/fi/fish/keymappings/default_mode.nix b/modules/by-name/fi/fish/keymappings/default_mode.nix new file mode 100644 index 00000000..253e09a5 --- /dev/null +++ b/modules/by-name/fi/fish/keymappings/default_mode.nix @@ -0,0 +1,469 @@ +{ + self, + escPlus, +}: { + "up" = {cmd = "up-or-search";}; + "n" = {cmd = "fish_vi_run_count up-or-search";}; + + "down" = {cmd = "down-or-search";}; + "t" = {cmd = "fish_vi_run_count down-or-search";}; + + "right" = {cmd = "forward-char";}; + "s" = {cmd = "fish_vi_run_count forward-char";}; + + "left" = {cmd = "backward-char";}; + "ctrl-h" = self.default.left; + "backspace" = self.default.left; + "h" = {cmd = "fish_vi_run_count backward-char";}; + + ${escPlus "1;9A"} = self.default."alt-up"; + "alt-up" = {cmd = "history-token-search-backward";}; + "alt-." = self.default."alt-up"; + "[" = self.default."alt-up"; + + ${escPlus "1;9B"} = self.default."alt-down"; + "alt-down" = {cmd = "history-token-search-forward";}; + "]" = self.default."alt-down"; + + ${escPlus "1;9D"} = self.default."alt-left"; + "alt-left" = {cmd = "prevd-or-backward-word";}; + "alt-b" = self.default."alt-left"; + + ${escPlus "1;9C"} = self.default."alt-right"; + "alt-right" = {cmd = "nextd-or-forward-word";}; + "alt-f" = self.default."alt-right"; + + "0" = { + cmd = '' + if test -n "$__fish_vi_count"; + fish_vi_arg_digit 0; + else; + commandline -f beginning-of-line; + end + ''; + }; + "1" = {cmd = "fish_vi_arg_digit 1";}; + "2" = {cmd = "fish_vi_arg_digit 2";}; + "3" = {cmd = "fish_vi_arg_digit 3";}; + "4" = {cmd = "fish_vi_arg_digit 4";}; + "5" = {cmd = "fish_vi_arg_digit 5";}; + "6" = {cmd = "fish_vi_arg_digit 6";}; + "7" = {cmd = "fish_vi_arg_digit 7";}; + "8" = {cmd = "fish_vi_arg_digit 8";}; + "9" = {cmd = "fish_vi_arg_digit 9";}; + + "alt-v" = {cmd = "edit_command_buffer";}; + "alt-e" = self.default."alt-v"; + + "ctrl-a" = {cmd = "fish_vi_inc";}; + "ctrl-x" = {cmd = "fish_vi_dec";}; + + "ctrl-r" = {cmd = "redo";}; + "u" = {cmd = "undo";}; + + "ctrl-l" = { + cmd = [ + "status test-terminal-feature scroll-content-up && commandline -f scrollback-push" + "clear-screen" + ]; + }; + "ctrl-y" = {cmd = "yank";}; + "ctrl-v" = {cmd = "fish_clipboard_paste";}; + + "ctrl-u" = {cmd = "backward-kill-line";}; + "delete" = {cmd = "delete-char";}; + "alt-d" = { + cmd = '' + if test "$(commandline; printf .)" = "\n."; + __fish_echo dirh; + else; + commandline -f kill-word; + end + ''; + }; + "alt-l" = { + cmd = "__fish_list_current_token"; + }; + "alt-s" = { + cmd = '' + for cmd in sudo doas please run0; + if command -q $cmd; + fish_commandline_prepend $cmd; + break; + end; + end + ''; + }; + "alt-w" = { + cmd = "__fish_whatis_current_token"; + }; + "end" = { + cmd = "end-of-line"; + }; + "alt-p" = { + cmd = "__fish_paginate"; + }; + "alt-h" = { + cmd = "__fish_man_page"; + }; + "tab" = { + cmd = "complete"; + }; + "ctrl-d" = { + cmd = "delete-or-exit"; + }; + "pageup" = { + cmd = "beginning-of-history"; + }; + "ctrl-w" = { + cmd = "backward-kill-path-component"; + }; + "alt-y" = { + cmd = "yank-pop"; + }; + "ctrl-i" = { + cmd = "complete"; + }; + "ctrl-\\[" = {cmd = "set -g __fish_vi_count";}; + "home" = { + cmd = "beginning-of-line"; + }; + "ctrl-s" = { + cmd = "pager-toggle-search"; + }; + "escape" = {cmd = "set -g __fish_vi_count";}; + "pagedown" = { + cmd = "end-of-history"; + }; + "shift-tab" = { + cmd = "complete-and-search"; + }; + "shift-delete" = { + cmd = ["history-delete" "or" "backward-delete-char"]; + }; + "ctrl-k" = { + cmd = "kill-line"; + }; + "ctrl-c" = { + cmd = ["clear-commandline" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "alt-o" = {cmd = "__fish_preview_current_file";}; + + "x" = {cmd = "__fish_vi_delete_char";}; + "D" = {cmd = "kill-line";}; + + "f" = {cmd = "forward-jump";}; + "k" = {cmd = "forward-jump-till";}; + "F" = {cmd = "backward-jump";}; + "K" = {cmd = "backward-jump-till";}; + + "shift-left" = {cmd = "backward-bigword";}; + "ctrl-left" = {cmd = "backward-token";}; + "shift-right" = {cmd = "forward-bigword";}; + "ctrl-right" = {cmd = "forward-token";}; + + "e" = {cmd = "fish_vi_run_count forward-word-end";}; + "E" = {cmd = "fish_vi_run_count forward-bigword-end";}; + "b" = {cmd = "fish_vi_run_count backward-word";}; + "B" = {cmd = "fish_vi_run_count backward-bigword";}; + "W" = {cmd = "fish_vi_run_count forward-bigword-vi";}; + "w" = {cmd = "fish_vi_run_count forward-word-vi";}; + + "g" = { + "g" = {cmd = "beginning-of-buffer";}; + "^" = {cmd = "beginning-of-line";}; + "~" = {cmd = "fish_vi_start_operator swap-case";}; + "u" = {cmd = "downcase-word";}; + "U" = {cmd = "upcase-word";}; + "$" = {cmd = "end-of-line";}; + "E" = {cmd = "fish_vi_run_count backward-bigword-end";}; + "p" = {cmd = "yank-pop";}; + "e" = {cmd = "fish_vi_run_count backward-word-end";}; + }; + "G" = {cmd = "end-of-buffer";}; + + "%" = {cmd = "jump-to-matching-bracket";}; + ";" = {cmd = "repeat-jump";}; + "P" = {cmd = "yank";}; + ":" = { + "q" = {cmd = "exit";}; + }; + "alt-#" = {cmd = "__fish_toggle_comment_commandline";}; + "S" = { + cmd = ["kill-inner-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + + "r" = { + cmd = "repaint-mode"; + sets_mode_to = "replace_one"; + }; + "f1" = { + cmd = "__fish_man_page"; + }; + "\"" = { + "+" = { + "P" = {cmd = "fish_clipboard_paste";}; + "y" = { + "y" = {cmd = "fish_clipboard_copy";}; + }; + "p" = { + cmd = [ + "set -g fish_cursor_end_mode exclusive" + "forward-char" + "set -g fish_cursor_end_mode inclusive" + "fish_clipboard_paste" + ]; + }; + "Y" = {cmd = "fish_clipboard_copy";}; + }; + "*" = { + "p" = { + cmd = [ + "set -g fish_cursor_end_mode exclusive" + "forward-char" + "set -g fish_cursor_end_mode inclusive" + "fish_clipboard_paste" + ]; + }; + "P" = {cmd = "fish_clipboard_paste";}; + "Y" = {cmd = "fish_clipboard_copy";}; + "y" = { + "y" = {cmd = "fish_clipboard_copy";}; + }; + }; + }; + "~" = { + cmd = ["togglecase-char" "forward-single-char"]; + }; + "i" = { + cmd = "repaint-mode"; + sets_mode_to = "insert"; + }; + "/" = { + cmd = ["history-pager" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "a" = { + cmd = [ + "set fish_cursor_end_mode exclusive" + "forward-single-char" + "repaint-mode" + ]; + sets_mode_to = "insert"; + }; + "R" = { + cmd = "repaint-mode"; + sets_mode_to = "replace"; + }; + "T" = {cmd = "man (commandline -t) 2>/dev/null; or echo -n \\a";}; + "o" = { + cmd = [ + "set fish_cursor_end_mode exclusive" + "insert-line-under" + "repaint-mode" + ]; + sets_mode_to = "insert"; + }; + "comma" = {cmd = "repeat-jump-reverse";}; + "^" = {cmd = "beginning-of-line";}; + "d" = { + "$" = {cmd = "kill-line";}; + "a" = { + "w" = {cmd = "kill-a-word";}; + "b" = { + cmd = [ + "jump-to-matching-bracket" + "and" + "jump-to-matching-bracket" + "and" + "begin-selection" + "jump-to-matching-bracket" + "kill-selection" + "end-selection" + ]; + }; + "W" = {cmd = "kill-a-bigword";}; + }; + "i" = { + "w" = {cmd = "kill-inner-word";}; + "W" = {cmd = "kill-inner-bigword";}; + "b" = { + cmd = [ + "jump-till-matching-bracket" + "and" + "jump-till-matching-bracket" + "and" + "begin-selection" + "jump-till-matching-bracket" + "kill-selection" + "end-selection" + ]; + }; + }; + "comma" = { + cmd = [ + "begin-selection" + "repeat-jump-reverse" + "kill-selection" + "end-selection" + ]; + }; + ";" = {cmd = ["begin-selection" "repeat-jump" "kill-selection" "end-selection"];}; + "0" = {cmd = "backward-kill-line";}; + "^" = {cmd = "backward-kill-line";}; + }; + "Y" = {cmd = ["kill-whole-line" "yank"];}; + "J" = { + cmd = ["end-of-line" "delete-char"]; + }; + "c" = { + "^" = { + cmd = ["backward-kill-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "w" = { + cmd = ["kill-word-vi" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "W" = { + cmd = ["kill-bigword-vi" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "i" = { + "w" = { + cmd = ["kill-inner-word" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "W" = { + cmd = ["kill-inner-bigword" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "b" = { + cmd = [ + "jump-till-matching-bracket" + "and" + "jump-till-matching-bracket" + "and" + "begin-selection" + "jump-till-matching-bracket" + "kill-selection" + "end-selection" + ]; + sets_mode_to = "insert"; + }; + }; + "a" = { + "W" = { + cmd = ["kill-a-bigword" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "w" = { + cmd = ["kill-a-word" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "b" = { + cmd = [ + "jump-till-matching-bracket" + "and" + "jump-till-matching-bracket" + "and" + "begin-selection" + "jump-to-matching-bracket" + "kill-selection" + "end-selection" + ]; + sets_mode_to = "insert"; + }; + }; + "$" = { + cmd = ["kill-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "0" = { + cmd = ["backward-kill-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + }; + "C" = { + cmd = ["kill-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "_" = {cmd = "beginning-of-line";}; + "A" = { + cmd = [ + "set fish_cursor_end_mode exclusive" + "end-of-line" + "repaint-mode" + ]; + sets_mode_to = "insert"; + }; + "I" = { + cmd = ["beginning-of-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "$" = {cmd = "end-of-line";}; + "X" = {cmd = "__fish_vi_backward_delete_char";}; + "y" = { + "0" = {cmd = ["backward-kill-line" "yank"];}; + "i" = { + "W" = {cmd = ["kill-inner-bigword" "yank"];}; + "w" = {cmd = ["kill-inner-word" "yank"];}; + "b" = { + cmd = [ + "jump-till-matching-bracket" + "and" + "jump-till-matching-bracket" + "and" + "begin-selection" + "jump-till-matching-bracket" + "fish_vi_yank_selection" + "end-selection" + ]; + }; + }; + "a" = { + "W" = {cmd = ["kill-a-bigword" "yank"];}; + "b" = { + cmd = [ + "jump-till-matching-bracket" + "and" + "jump-till-matching-bracket" + "and" + "begin-selection" + "jump-to-matching-bracket" + "fish_vi_yank_selection" + "end-selection" + ]; + }; + "w" = {cmd = ["kill-a-word" "yank"];}; + }; + "^" = {cmd = ["backward-kill-line" "yank"];}; + "$" = {cmd = ["kill-line" "yank"];}; + }; + "p" = { + cmd = [ + "set -g fish_cursor_end_mode exclusive" + "forward-char" + "set -g fish_cursor_end_mode inclusive" + "yank" + ]; + }; + "#" = {cmd = "__fish_toggle_comment_commandline";}; + "v" = { + cmd = ["begin-selection" "repaint-mode"]; + sets_mode_to = "visual"; + }; + "O" = { + cmd = ["set fish_cursor_end_mode exclusive" "insert-line-over" "repaint-mode"]; + sets_mode_to = "insert"; + }; + + "ctrl-m" = self.default.enter; + "ctrl-j" = self.default.enter; + "enter" = { + cmd = "execute"; + sets_mode_to = "insert"; + }; +} diff --git a/modules/by-name/fi/fish/keymappings/insert.nix b/modules/by-name/fi/fish/keymappings/insert.nix new file mode 100644 index 00000000..587ae531 --- /dev/null +++ b/modules/by-name/fi/fish/keymappings/insert.nix @@ -0,0 +1,146 @@ +{ + self, + escPlus, +}: { + ${escPlus "1;9B"} = self.default."${escPlus "1;9B"}"; + ${escPlus "1;9D"} = self.default."${escPlus "1;9D"}"; + ${escPlus "1;9C"} = self.default."${escPlus "1;9C"}"; + ${escPlus "1;9A"} = self.default."${escPlus "1;9A"}"; + inherit + (self.default) + "alt-#" + "alt-." + alt-b + alt-d + alt-e + alt-f + alt-h + alt-l + alt-o + alt-p + alt-left + alt-right + alt-down + alt-up + alt-s + alt-v + alt-w + alt-y + ctrl-d + ctrl-i + ctrl-k + ctrl-l + ctrl-left + ctrl-right + ctrl-s + ctrl-v + ctrl-w + ctrl-y + delete + end + f1 + home + right + left + down + up + pagedown + pageup + shift-delete + shift-left + shift-right + shift-tab + tab + ; + + ">" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "&" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "space" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "ctrl-u" = { + cmd = "backward-kill-line"; + }; + "shift-backspace" = { + cmd = "backward-delete-char"; + }; + "alt-enter" = { + cmd = [ + ''commandline -i \n (commandline --search-field >/dev/null && echo --search-field)'' + "expand-abbr" + ]; + }; + "ctrl-n" = { + cmd = "accept-autosuggestion"; + }; + "shift-space" = { + cmd = [ + '' + commandline -i " " (commandline --search-field >/dev/null && echo --search-field) + '' + "expand-abbr" + ]; + }; + ")" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "ctrl-x" = { + cmd = "fish_clipboard_copy"; + }; + "<" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "shift-enter" = { + cmd = [ + ''commandline -i \n (commandline --search-field >/dev/null && echo --search-field)'' + "expand-abbr" + ]; + }; + "|" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "ctrl-space" = { + cmd = '' + test -n "$(commandline)" + && commandline -i " " (commandline --search-field >/dev/null && echo --search-field) + ''; + }; + "ctrl-h" = { + cmd = "backward-delete-char"; + }; + "" = { + cmd = "self-insert"; + }; + ";" = { + cmd = ["self-insert" "expand-abbr"]; + }; + "backspace" = { + cmd = "backward-delete-char"; + }; + "ctrl-c" = { + cmd = "clear-commandline"; + }; + "escape" = { + cmd = '' + if commandline -P + commandline -f cancel + else + set fish_bind_mode default + if test (count (commandline --cut-at-cursor | tail -c2)) != 2 + commandline -f backward-char + end + commandline -f repaint-mode + end + ''; + }; + "ctrl-\\[" = self.insert.escape; + + "enter" = {cmd = self.default."enter".cmd;}; + "ctrl-j" = self.insert."enter"; + "ctrl-enter" = self.insert."enter"; + "ctrl-m" = self.insert."enter"; +} diff --git a/modules/by-name/fi/fish/keymappings/operator.nix b/modules/by-name/fi/fish/keymappings/operator.nix new file mode 100644 index 00000000..1d886f58 --- /dev/null +++ b/modules/by-name/fi/fish/keymappings/operator.nix @@ -0,0 +1,99 @@ +{self}: { + "0" = { + cmd = "fish_vi_exec_motion beginning-of-line"; + }; + "1" = self.default."1"; + "2" = self.default."2"; + "3" = self.default."3"; + "4" = self.default."4"; + "5" = self.default."5"; + "6" = self.default."6"; + "7" = self.default."7"; + "8" = self.default."8"; + "9" = self.default."9"; + + "B" = { + cmd = "fish_vi_exec_motion backward-bigword"; + }; + "escape" = { + cmd = "fish_vi_operator_cancel"; + }; + "F" = { + cmd = ""; + sets_mode_to = "F"; + }; + "d" = { + cmd = "fish_vi_exec_motion --linewise"; + }; + "e" = { + cmd = "fish_vi_exec_motion forward-word-end"; + }; + "j" = { + cmd = "fish_vi_exec_motion down-line"; + }; + "k" = { + cmd = "fish_vi_exec_motion up-line"; + }; + "h" = { + cmd = "fish_vi_exec_motion backward-char"; + }; + "E" = { + cmd = "fish_vi_exec_motion forward-bigword-end"; + }; + "~" = { + cmd = "fish_vi_exec_motion --linewise"; + }; + "comma" = { + cmd = "fish_vi_exec_motion repeat-jump-reverse"; + }; + "^" = { + cmd = "fish_vi_exec_motion beginning-of-line"; + }; + "ctrl-\\[" = { + cmd = "fish_vi_operator_cancel"; + }; + ";" = { + cmd = "fish_vi_exec_motion repeat-jump"; + }; + "c" = { + cmd = "fish_vi_exec_motion --linewise"; + }; + "T" = { + cmd = ""; + sets_mode_to = "T"; + }; + "t" = { + cmd = ""; + sets_mode_to = "t"; + }; + "W" = { + cmd = "fish_vi_exec_motion forward-bigword-vi"; + }; + "$" = { + cmd = "fish_vi_exec_motion end-of-line"; + }; + "g" = { + "E" = { + cmd = "fish_vi_exec_motion backward-bigword-end"; + }; + "e" = { + cmd = "fish_vi_exec_motion backward-word-end"; + }; + }; + "w" = { + cmd = "fish_vi_exec_motion forward-word-vi"; + }; + "b" = { + cmd = "fish_vi_exec_motion backward-word"; + }; + "y" = { + cmd = "fish_vi_exec_motion --linewise"; + }; + "l" = { + cmd = "fish_vi_exec_motion forward-char"; + }; + "f" = { + cmd = ""; + sets_mode_to = "f"; + }; +} diff --git a/modules/by-name/fi/fish/keymappings/visual.nix b/modules/by-name/fi/fish/keymappings/visual.nix new file mode 100644 index 00000000..47c89157 --- /dev/null +++ b/modules/by-name/fi/fish/keymappings/visual.nix @@ -0,0 +1,306 @@ +{ + self, + escPlus, +}: { + ${escPlus "1;9A"} = {cmd = "history-token-search-backward";}; + ${escPlus "1;9B"} = {cmd = "history-token-search-forward";}; + ${escPlus "1;9C"} = {cmd = "nextd-or-forward-word";}; + ${escPlus "1;9D"} = {cmd = "prevd-or-backward-word";}; + + "alt-down" = { + cmd = "history-token-search-forward"; + }; + "alt-h" = { + cmd = "__fish_man_page"; + }; + "l" = { + cmd = "forward-char"; + }; + "T" = { + cmd = "backward-jump-till"; + }; + "e" = { + cmd = "forward-word-end"; + }; + "right" = { + cmd = "forward-char"; + }; + "t" = { + cmd = "forward-jump-till"; + }; + "s" = { + cmd = ["kill-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "alt-#" = { + cmd = "__fish_toggle_comment_commandline"; + }; + "_" = { + cmd = "beginning-of-line"; + }; + "%" = { + cmd = "jump-to-matching-bracket"; + }; + "ctrl-s" = { + cmd = "pager-toggle-search"; + }; + "ctrl-w" = { + cmd = "backward-kill-path-component"; + }; + "alt-o" = { + cmd = "__fish_preview_current_file"; + }; + "left" = { + cmd = "backward-char"; + }; + "shift-left" = { + cmd = "backward-bigword"; + }; + "alt-p" = { + cmd = "__fish_paginate"; + }; + "F" = { + cmd = "backward-jump"; + }; + "ctrl-left" = { + cmd = "backward-token"; + }; + "b" = { + cmd = "backward-word"; + }; + "f1" = { + cmd = "__fish_man_page"; + }; + "shift-delete" = { + cmd = ["history-delete" "or" "backward-delete-char"]; + }; + "\"" = { + "+" = { + "y" = { + cmd = ["fish_clipboard_copy; commandline -f end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + }; + "*" = { + "y" = { + cmd = ["fish_clipboard_copy; commandline -f end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + }; + }; + "shift-tab" = { + cmd = "complete-and-search"; + }; + "alt-b" = { + cmd = "prevd-or-backward-word"; + }; + "#" = { + cmd = "__fish_toggle_comment_commandline"; + }; + "~" = { + cmd = ["togglecase-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "y" = { + cmd = ["fish_vi_yank_selection" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "f" = { + cmd = "forward-jump"; + }; + "x" = { + cmd = ["kill-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "X" = { + cmd = ["kill-whole-line" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "alt-y" = { + cmd = "yank-pop"; + }; + "$" = { + cmd = "end-of-line"; + }; + ";" = { + cmd = "repeat-jump"; + }; + "W" = { + cmd = "forward-bigword-vi"; + }; + "w" = { + cmd = "forward-word-vi"; + }; + "j" = { + cmd = "down-line"; + }; + "k" = { + cmd = "up-line"; + }; + "end" = { + cmd = "end-of-line"; + }; + "down" = { + cmd = "down-or-search"; + }; + "alt-up" = { + cmd = "history-token-search-backward"; + }; + "i" = { + cmd = ["end-selection" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "g" = { + "^" = { + cmd = "beginning-of-line"; + }; + "e" = { + cmd = "backward-word-end"; + }; + "$" = { + cmd = "end-of-line"; + }; + "U" = { + cmd = ["upcase-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "u" = { + cmd = ["downcase-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "E" = { + cmd = "backward-bigword-end"; + }; + }; + "I" = { + cmd = ["end-selection" "beginning-of-line" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "alt-." = { + cmd = "history-token-search-backward"; + }; + "home" = { + cmd = "beginning-of-line"; + }; + "alt-l" = { + cmd = "__fish_list_current_token"; + }; + "ctrl-x" = { + cmd = "fish_clipboard_copy"; + }; + "alt-s" = { + cmd = '' + for cmd in sudo doas please run0; + if command -q $cmd; + fish_commandline_prepend $cmd; + break; + end; + end + ''; + }; + "o" = { + cmd = ["swap-selection-start-stop" "repaint-mode"]; + }; + "pageup" = { + cmd = "beginning-of-history"; + }; + "ctrl-l" = { + cmd = [ + "status test-terminal-feature scroll-content-up && commandline -f scrollback-push" + "clear-screen" + ]; + }; + "up" = { + cmd = "up-or-search"; + }; + "ctrl-u" = { + cmd = "backward-kill-line"; + }; + "h" = { + cmd = "backward-char"; + }; + "alt-right" = { + cmd = "nextd-or-forward-word"; + }; + "ctrl-y" = { + cmd = "yank"; + }; + "v" = { + cmd = ["end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "0" = { + cmd = "beginning-of-line"; + }; + "ctrl-k" = { + cmd = "kill-line"; + }; + "alt-v" = { + cmd = "edit_command_buffer"; + }; + "ctrl-v" = { + cmd = "fish_clipboard_paste"; + }; + "ctrl-i" = { + cmd = "complete"; + }; + "d" = { + cmd = [ + "kill-selection" + "end-selection" + "backward-char" + "repaint-mode" + ]; + sets_mode_to = "default"; + }; + "^" = { + cmd = "beginning-of-line"; + }; + "alt-f" = { + cmd = "nextd-or-forward-word"; + }; + "ctrl-right" = { + cmd = "forward-token"; + }; + "alt-w" = { + cmd = "__fish_whatis_current_token"; + }; + "shift-right" = { + cmd = "forward-bigword"; + }; + "E" = { + cmd = "forward-bigword-end"; + }; + "tab" = { + cmd = "complete"; + }; + "B" = { + cmd = "backward-bigword"; + }; + "alt-e" = { + cmd = "edit_command_buffer"; + }; + "alt-d" = self.default."alt-d"; + "pagedown" = { + cmd = "end-of-history"; + }; + "c" = { + cmd = ["kill-selection" "end-selection" "repaint-mode"]; + sets_mode_to = "insert"; + }; + "alt-left" = { + cmd = "prevd-or-backward-word"; + }; + "comma" = { + cmd = "repeat-jump-reverse"; + }; + "ctrl-d" = { + cmd = "delete-or-exit"; + }; + "escape" = { + cmd = ["end-selection" "repaint-mode"]; + sets_mode_to = "default"; + }; + "ctrl-\\[" = self.visual.escape; + "ctrl-c" = self.visual.escape; +} diff --git a/modules/by-name/fi/fish/module.nix b/modules/by-name/fi/fish/module.nix new file mode 100644 index 00000000..4b4cfee1 --- /dev/null +++ b/modules/by-name/fi/fish/module.nix @@ -0,0 +1,131 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.soispha.programs.fish; + + sourceFile = path: "source ${path}\n"; + + extraFiles = builtins.concatStringsSep "\n" ( + builtins.map (value: + if builtins.isPath value + then (sourceFile value) + else value) ( + builtins.attrValues cfg.integrations + ) + ); + + keymappings_raw = import ./keymappings {inherit lib;}; + mkBinding = mode: base_key: binding: let + sets_mode_to = + if binding ? sets_mode_to + then "--sets-mode ${binding.sets_mode_to} " + else ""; + in + if binding ? cmd + then let + mkCmd = cmd: "'${cmd}'"; + escaped_key = + if base_key == "" + then ''""'' + else + lib.escape [ + "\"" + "(" + ")" + "$" + ";" + "*" + "&" + "|" + "~" + "<" + ">" + "^" + "#" + ] + base_key; + escaped_cmd = + if builtins.isList binding.cmd + then builtins.concatStringsSep " " (builtins.map mkCmd binding.cmd) + else mkCmd binding.cmd; + in '' + bind --mode "${mode}" ${sets_mode_to}--preset ${escaped_key} ${escaped_cmd} + '' + else + builtins.concatStringsSep "" (lib.mapAttrsToList + (new_key: value: mkBinding mode "${base_key + "," + new_key}" value) + binding); + mkMode = mode: attr: builtins.concatStringsSep "" (lib.mapAttrsToList (mkBinding mode) attr); + keymappings = + '' + function fish_my_key_bindings + fish_vi_key_bindings + bind --erase --all --preset + '' + + builtins.concatStringsSep "\n" (lib.mapAttrsToList mkMode keymappings_raw) + + '' + end + set -g fish_key_bindings fish_my_key_bindings + ''; +in { + options.soispha.programs.fish = { + enable = lib.mkEnableOption "fish"; + + integrations = lib.mkOption { + type = lib.types.attrsOf (lib.types.either lib.types.path lib.types.str); + example = '' + { + atuin = ./integrations/atuin.fish; + } + ''; + default = {}; + }; + }; + + config = lib.mkIf cfg.enable { + # Ensure that the default shell of the user is actually enabled. + programs.fish = { + enable = true; + package = pkgs.fish-patched; + }; + + users.users.soispha.shell = config.programs.fish.package; + + home-manager.users.soispha = { + home.sessionPath = lib.mkForce []; + + programs.fish = { + enable = true; + + package = config.programs.fish.package; + + interactiveShellInit = let + start = lib.modules.mkBefore ( + sourceFile ./config/01_show-task.fish + ); + end = lib.modules.mkAfter keymappings; + in + lib.modules.mkMerge + [ + start + + extraFiles + + end + ]; + }; + }; + }; +} |
