{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"; }; }; })