diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-07-24 22:30:47 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-07-24 22:30:47 +0200 |
| commit | 421701a975ab6ab71f17fd985103b7699aaf3144 (patch) | |
| tree | 8ae5336cb767a63f29a602fe7b7ebd5d256dc345 | |
| parent | modules/calibre: Init (diff) | |
| download | nixos-config-421701a975ab6ab71f17fd985103b7699aaf3144.zip | |
modules/lf/keybinds: Explicitly declare all keybindings
Diffstat (limited to '')
| -rw-r--r-- | modules/by-name/lf/lf/keybindings/default.nix | 103 | ||||
| -rw-r--r-- | modules/by-name/lf/lf/module.nix | 15 |
2 files changed, 86 insertions, 32 deletions
diff --git a/modules/by-name/lf/lf/keybindings/default.nix b/modules/by-name/lf/lf/keybindings/default.nix index d7f8eb95..bd4b2a2c 100644 --- a/modules/by-name/lf/lf/keybindings/default.nix +++ b/modules/by-name/lf/lf/keybindings/default.nix @@ -11,69 +11,99 @@ uid, downloadDir, }: { - # Remove some defaults - "'\"'" = null; - ";" = null; - "\"'\"" = null; + # v o visual-change + # v <esc> visual-discard + # v o visual-change + # v V visual-accept + + "\\!" = "shell-wait"; + "\\$" = "shell"; + "\\%" = "shell-pipe"; + "\\&" = "shell-async"; + "\\:" = "read"; + + "<f-1>" = "help"; + + "<left>" = "updir"; + "<right>" = "open"; + "<down>" = "down"; + "<up>" = "up"; + + "<c-f>" = "page-down"; + "<pgdn>" = "page-down"; + "<pgup>" = "page-up"; + "<c-b>" = "page-up"; + + "[" = "jump-prev"; + "]" = "jump-next"; + q = "quit"; # Sorting - # k = null; k = { - n = ":set sortby natural; set info"; - s = ":set sortby size; set info size"; - t = ":set sortby time; set info time"; - a = ":set sortby atime; set info atime"; - c = ":set sortby ctime; set info ctime"; - e = ":set sortby ext; set info"; + a = ":{{ set sortby atime; set info atime; }}"; + b = ":{{ set sortby btime; set info btime; }}"; + c = ":{{ set sortby ctime; set info ctime; }}"; + e = ":{{ set sortby ext; set info; }}"; + n = ":{{ set sortby natural; set info; }}"; + s = ":{{ set sortby size; set info size; }}"; + t = ":{{ set sortby time; set info time; }}"; + }; + z = { + a = "set info size:time"; + h = "set hidden!"; + n = "set info"; + r = "set reverse!"; + s = "set info size"; + t = "set info time"; }; # Searching l = "search-next"; L = "search-prev"; + "/" = "search"; + "?" = "search-back"; + F = "find-back"; + "," = "find-prev"; + # File edit - # e = null; e = { - e = "\$\$EDITOR \"$f\""; - s = "\$ nvim -S \"$f\""; + e = "\${{ $EDITOR \"$f\" }}"; + s = "\${{ nvim -S \"$f\" }}"; }; u = "view_file"; - # f = null; f = { e = "execute"; l = "follow_link"; }; - # c = null; c = { + h = "chmod"; p = "set_clipboard_path"; s = "stripspace"; - h = "chmod"; }; # Archive Mappings a = { - u = "archive_decompress"; a = "archive_compress"; + u = "archive_decompress"; }; D = { D = "delete"; }; - # d = null; d = { # Trash Mappings d = "trash"; # Dragon Mapping + i = "dragon_individual"; r = "dragon"; s = "dragon_stay"; - i = "dragon_individual"; }; - # j = null; j = { c = "trash_clear"; r = "trash_restore"; @@ -86,17 +116,22 @@ s = "open"; # Basic Functions - "." = "set hidden!"; p = "paste"; x = "cut"; y = "copy"; "<enter>" = "open"; - # m = null; + # Selecting + v = "invert"; + V = "visual"; + "<space>" = ":{{ toggle; down; }}"; + C = "clear"; + U = "unselect"; + m = { - k = "mk_link"; - f = "mk_file"; d = "mk_directory"; + f = "mk_file"; + l = "mk_link"; s = "mk_script"; }; @@ -104,18 +139,24 @@ g = "set_wallpaper"; }; - r = ":rename; cmd-end"; + r = ":{{ rename; cmd-end; }}"; + "<c-r>" = "reload"; R = "reload"; - C = "clear"; - U = "unselect"; + "<c-l>" = "redraw"; + + # Change cursor position + G = "bottom"; + H = "high"; + M = "middle"; # (walking) Movement w = { - u = "cd /run/user/${builtins.toString uid}"; - e = "cd /etc"; d = "cd ${downloadDir}"; - t = "cd /tmp"; + e = "cd /etc"; + H = "cd ~"; h = "cd_project_root"; + t = "cd /tmp"; + u = "cd /run/user/${builtins.toString uid}"; }; g = "cd_lf_make_map"; diff --git a/modules/by-name/lf/lf/module.nix b/modules/by-name/lf/lf/module.nix index 0a0e193f..4205771e 100644 --- a/modules/by-name/lf/lf/module.nix +++ b/modules/by-name/lf/lf/module.nix @@ -14,11 +14,24 @@ shell_library, system, lib, + libraries, ... }: let - commands = import ./commands {inherit pkgs sysLib shell_library system;}; + real_commands = import ./commands {inherit pkgs sysLib shell_library system;}; keybindings_raw = import ./keybindings {inherit (cfg.keymaps) uid downloadDir;}; + # NOTE: There is no (easy) way for me to make sure, that the `clearmaps` command is + # generated in the lf config before the keymapping commands. + # This command injection works around that. <2026-07-21> + commands = libraries.extra.warnMerge real_commands { + __clearmaps_injection = '' + :{{ + clearmaps + }}; + clearmaps + ''; + } "lf command map"; + process = prefix: attrs: lib.mapAttrsToList (name: value: if (builtins.isAttrs value) |
