From 07e16f639651e5a72f3ea4ff36c1baac5be83aff Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Fri, 28 Mar 2025 21:15:08 -0400 Subject: [PATCH] AutoYADM commit: 2025-03-28 21:15:08 --- .config/fish/conf.d/fzf_config.fish | 20 + .config/fish/fish_variables | 4 +- .config/fish/functions/autosshtunnel.fish | 4 - .config/fish/functions/c.fish | 2 +- .config/fish/functions/copyl.fish | 4 +- .config/fish/functions/fish_bind_count.fish | 28 -- .../functions/fish_default_mode_prompt.fish | 26 -- .../fish/functions/fish_helix_command.fish | 433 ------------------ .../functions/fish_helix_key_bindings.fish | 304 ------------ .../functions/fish_user_key_bindings.fish | 2 +- .config/fish/functions/man.fish | 14 +- 11 files changed, 30 insertions(+), 811 deletions(-) create mode 100644 .config/fish/conf.d/fzf_config.fish delete mode 100644 .config/fish/functions/autosshtunnel.fish delete mode 100644 .config/fish/functions/fish_bind_count.fish delete mode 100644 .config/fish/functions/fish_default_mode_prompt.fish delete mode 100644 .config/fish/functions/fish_helix_command.fish delete mode 100644 .config/fish/functions/fish_helix_key_bindings.fish diff --git a/.config/fish/conf.d/fzf_config.fish b/.config/fish/conf.d/fzf_config.fish new file mode 100644 index 00000000..6a9453bd --- /dev/null +++ b/.config/fish/conf.d/fzf_config.fish @@ -0,0 +1,20 @@ +set -gx FZF_DEFAULT_OPTS " +--height 50% +--layout=default +--border +--color=hl:#933737 +--color=fg:#a7a7a7 +--color=fg+:#d5d5d5 +--color=bg:#121212 +--color=bg+:#323232 +--color=hl:#C4693D +--color=hl+:#E49A44 +--color=info:#a7a7a7 +--color=marker:#C4693D +--color=prompt:#C4693D +--color=spinner:#D87C4A +--color=pointer:#E5A72A +--color=header:#B14242 +--color=border:#a7a7a7 +--color=query:#d5d5d5 +--color=gutter:#121212" diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables index 626affb3..ed9d38c6 100644 --- a/.config/fish/fish_variables +++ b/.config/fish/fish_variables @@ -6,8 +6,8 @@ SETUVAR EDITOR:hx SETUVAR --export TERM:xterm\x2d256color SETUVAR --export XDG_CONFIG_HOME:/home/fic/\x2econfig SETUVAR Z_DATA_DIR:/home/fic/\x2elocal/share/z -SETUVAR --export __ABBR_TIPS_KEYS:a__autoyadm\x1ea__cat\x1ea__dnd\x1ea__h\x1ea__lg\x1ea__ls\x1ea__mailconf\x1ea__rm\x1ea__top\x1ea__yadmadd\x1ea__ylg\x1ea__z\x1ea__zi -SETUVAR --export __ABBR_TIPS_VALUES:AUTOYADMPUSH\x3d1\x20\x7e/dev/autoyadm/autoyadm\x2esh\x1ebat\x1edragon\x2ddrop\x1ehx\x1elazygit\x1eexa\x20\x2d\x2dlong\x20\x2d\x2dgit\x20\x2d\x2dheader\x20\x2d\x2dicons\x1ey\x20\x7e/\x2econfig/mail\x1egomi\x1ebtop\x1e\x7e/dev/autoyadm/yadmadd\x2esh\x1eyadm\x20enter\x20lazygit\x1e__zoxide_z\x1e__zoxide_zi +SETUVAR --export __ABBR_TIPS_KEYS:a__autoyadm\x1ea__cat\x1ea__dnd\x1ea__h\x1ea__lg\x1ea__ls\x1ea__mailconf\x1ea__rm\x1ea__top\x1ea__yadmadd\x1ea__ylg\x1ea__z\x1ea__zi\x1egco +SETUVAR --export __ABBR_TIPS_VALUES:AUTOYADMPUSH\x3d1\x20\x7e/dev/autoyadm/autoyadm\x2esh\x1ebat\x1edragon\x2ddrop\x1ehx\x1elazygit\x1eexa\x20\x2d\x2dlong\x20\x2d\x2dgit\x20\x2d\x2dheader\x20\x2d\x2dicons\x1ey\x20\x7e/\x2econfig/mail\x1egomi\x1ebtop\x1e\x7e/dev/autoyadm/yadmadd\x2esh\x1eyadm\x20enter\x20lazygit\x1e__zoxide_z\x1e__zoxide_zi\x1egit\x20checkout SETUVAR __fish_initialized:3800 SETUVAR _fisher_franciscolourenco_2F_done_files:\x7e/\x2econfig/fish/conf\x2ed/done\x2efish SETUVAR _fisher_gazorby_2F_fish_2D_abbreviation_2D_tips_files:\x7e/\x2econfig/fish/functions/__abbr_tips_bind_newline\x2efish\x1e\x7e/\x2econfig/fish/functions/__abbr_tips_bind_space\x2efish\x1e\x7e/\x2econfig/fish/functions/__abbr_tips_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__abbr_tips_init\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/abbr_tips\x2efish diff --git a/.config/fish/functions/autosshtunnel.fish b/.config/fish/functions/autosshtunnel.fish deleted file mode 100644 index 69114933..00000000 --- a/.config/fish/functions/autosshtunnel.fish +++ /dev/null @@ -1,4 +0,0 @@ -function autosshtunnel -start-ssh-agent -tmux new-session -d 'autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 1675:ibox:22 isa@172.105.6.137' -end diff --git a/.config/fish/functions/c.fish b/.config/fish/functions/c.fish index 6467ad56..f7c90263 100644 --- a/.config/fish/functions/c.fish +++ b/.config/fish/functions/c.fish @@ -1,3 +1,3 @@ -function c +function c --wraps clear --description "Clear the screen" clear end diff --git a/.config/fish/functions/copyl.fish b/.config/fish/functions/copyl.fish index 9e82adbd..74c807f9 100644 --- a/.config/fish/functions/copyl.fish +++ b/.config/fish/functions/copyl.fish @@ -1,3 +1,3 @@ -function copyl - echo "file://$PWD/$argv" | wl-copy -t 'text/uri-list' +function copyl --description "Copy URI path" + echo "file://$PWD/$argv" | wl-copy -t text/uri-list end diff --git a/.config/fish/functions/fish_bind_count.fish b/.config/fish/functions/fish_bind_count.fish deleted file mode 100644 index c865701d..00000000 --- a/.config/fish/functions/fish_bind_count.fish +++ /dev/null @@ -1,28 +0,0 @@ -function fish_bind_count - argparse 'h/help' 'z/zero' 'r/read' -- $argv - or return 1 - if test -n "$_flag_help" - echo "Helper function to track count modifier with modal key bindings" - echo "Usage: $0 [-h] [-z] [DIGITS ...]" - return - end - if test -n "$_flag_zero" || not string match -rq '[1-9]\d*' "$fish_bind_count" - set -g fish_bind_count 0 - end - # Iterate over given digits - for arg in $argv - for digit in (string split '' "$arg") - set -g fish_bind_count $(math "$fish_bind_count" \* 10 \+ "$digit") - end - end - if test -n "$_flag_read" - set -l count "$fish_bind_count" - set -g fish_bind_count 0 - if test "$count" = 0 - echo 1 - return 1 - else - echo "$count" - end - end -end \ No newline at end of file diff --git a/.config/fish/functions/fish_default_mode_prompt.fish b/.config/fish/functions/fish_default_mode_prompt.fish deleted file mode 100644 index 2b03a7bc..00000000 --- a/.config/fish/functions/fish_default_mode_prompt.fish +++ /dev/null @@ -1,26 +0,0 @@ -function fish_default_mode_prompt --description "Display vi/helix prompt mode" - # Do nothing if not in vi mode - if test "$fish_key_bindings" = fish_vi_key_bindings - or test "$fish_key_bindings" = fish_helix_key_bindings - or test "$fish_key_bindings" = fish_hybrid_key_bindings - switch $fish_bind_mode - case default - set_color --bold red - echo '[N]' - case insert - set_color --bold green - echo '[I]' - case replace_one - set_color --bold green - echo '[R]' - case replace - set_color --bold cyan - echo '[R]' - case visual - set_color --bold magenta - echo '[V]' - end - set_color normal - echo -n ' ' - end -end diff --git a/.config/fish/functions/fish_helix_command.fish b/.config/fish/functions/fish_helix_command.fish deleted file mode 100644 index 9d859552..00000000 --- a/.config/fish/functions/fish_helix_command.fish +++ /dev/null @@ -1,433 +0,0 @@ -# FIXME this can't be called in sequence in general case, -# because of unsynchronized `commandline -f` and `commandline -C` - -function fish_helix_command - argparse 'h/help' -- $argv - or return 1 - if test -n "$_flag_help" - echo "Helper function to handle modal key bindings mostly outside of insert mode" - return - end - - # TODO only single command allowed really yet, - # because `commandline -f` queues actions, while `commandline -C` is immediate - for command in $argv - set -f count (fish_bind_count -r) - set -f count_defined $status - - switch $command - case {move,extend}_char_left - commandline -C (math max\(0, (commandline -C) - $count\)) - __fish_helix_extend_by_command $command - case {move,extend}_char_right - commandline -C (math (commandline -C) + $count) - __fish_helix_extend_by_command $command - - case char_up - __fish_helix_char_up $fish_bind_mode $count - case char_down - __fish_helix_char_down $fish_bind_mode $count - - case next_word_start - # https://regex101.com/r/KXrl1x/1 - set -l regex (string join '' \ - '(?:.?\\n+|' \ - '[[:alnum:]_](?=[^[:alnum:]_\\s])|' \ - '[^[:alnum:]_\\s](?=[[:alnum:]_])|' \ - '[^\\S\\n](?=[\\S\\n])|)' \ - '((?:[[:alnum:]_]+|[^[:alnum:]_\\s]+|)[^\\S\\n]*)' \ - ) - __fish_helix_next_word $fish_bind_mode $count $regex - - case next_long_word_start - set -l regex (string join '' \ - '(?:.?\\n+|' \ - '[^\\S\\n](?=[\\S\\n])|)' \ - '(\\S*[^\\S\\n]*)' \ - ) - __fish_helix_next_word $fish_bind_mode $count $regex - - case next_word_end - # https://regex101.com/r/Gl0KP2/1 - set -l regex ' (?: - .?\\n+ | - [[:alnum:]_](?=[^[:alnum:]_]) | - [^[:alnum:]_\\s](?=[[:alnum:]_\\s]) | ) - ( [^\\S\\n]* - (?: [[:alnum:]_]+ | [^[:alnum:]_\\s]+ | ) ) ' - __fish_helix_next_word $fish_bind_mode $count $regex - - case next_long_word_end - set -l regex ' (?: .?\\n+ | \\S(?=\\s) | ) - ( [^\\S\\n]* \\S* ) ' - __fish_helix_next_word $fish_bind_mode $count $regex - - case prev_word_start - set -l regex ' ( (?: - [[:alnum:]_]+ | - [^[:alnum:]_\\s]+ | ) - [^\\S\\n]* ) - (?: \\n+.? | - (?<=[^[:alnum:]_])[[:alnum:]_] | - (?<=[[:alnum:]_\\s])[^[:alnum:]_\\s] | ) ' - __fish_helix_prev_word $fish_bind_mode $count $regex - - case prev_long_word_start - set -l regex ' - ( \\S* [^\\S\\n]* ) - (?: \\n+.? | (?<=\\s)\\S | ) ' - __fish_helix_prev_word $fish_bind_mode $count $regex - - - case till_next_char - __fish_helix_find_char $fish_bind_mode $count forward-jump-till forward-char - case find_next_char - __fish_helix_find_char $fish_bind_mode $count forward-jump - case till_prev_char - __fish_helix_find_char $fish_bind_mode $count backward-jump-till backward-char - case find_prev_char - __fish_helix_find_char $fish_bind_mode $count backward-jump - - case till_next_cr - __fish_helix_find_next_cr $fish_bind_mode $count 2 - case find_next_cr - __fish_helix_find_next_cr $fish_bind_mode $count 1 - case till_prev_cr - __fish_helix_find_prev_cr $fish_bind_mode $count 1 - case find_prev_cr - __fish_helix_find_prev_cr $fish_bind_mode $count 0 - - case goto_line_start - commandline -f beginning-of-line - __fish_helix_extend_by_mode - case goto_line_end - __fish_helix_goto_line_end - __fish_helix_extend_by_mode - case goto_first_nonwhitespace - __fish_helix_goto_first_nonwhitespace - __fish_helix_extend_by_mode - - case goto_file_start - __fish_helix_goto_line $count - case goto_line - if test "$count_defined" = 0 # if true - __fish_helix_goto_line $count - end - case goto_last_line - commandline -f end-of-buffer beginning-of-line - __fish_helix_extend_by_mode - - case insert_mode - commandline -C (commandline -B) - set fish_bind_mode insert - commandline -f end-selection repaint-mode - - case append_mode - commandline -C (commandline -E) - set fish_bind_mode insert - commandline -f end-selection repaint-mode - - case prepend_to_line - __fish_helix_goto_first_nonwhitespace - set fish_bind_mode insert - commandline -f end-selection repaint-mode - - case append_to_line - set fish_bind_mode insert - commandline -f end-selection end-of-line repaint-mode - - case delete_selection - commandline -f kill-selection begin-selection - case delete_selection_noyank - __fish_helix_delete_selection - - case yank - __fish_helix_yank - case paste_before - __fish_helix_paste_before "commandline -f yank" - case paste_after - __fish_helix_paste_after "commandline -f yank" - case replace_selection - __fish_helix_replace_selection "$fish_killring[1]" "true" - - case paste_before_clip - __fish_helix_paste_before "fish_clipboard_paste" - case paste_after_clip - __fish_helix_paste_after "fish_clipboard_paste" --clip - case replace_selection_clip - __fish_helix_replace_selection "" "fish_clipboard_paste" --clip - - case select_all - commandline -f beginning-of-buffer begin-selection end-of-buffer end-of-line backward-char - - - case '*' - echo "[fish-helix]" Unknown command $command >&2 - end - end -end - -function __fish_helix_extend_by_command -a piece - if not string match -qr extend_ $piece - commandline -f begin-selection - end -end - -function __fish_helix_extend_by_mode - if test $fish_bind_mode = default - commandline -f begin-selection - end -end - -function __fish_helix_find_char -a mode count fish_cmdline till - # FIXME don't reset selection if N/A - if test $mode = default - commandline -f begin-selection - end - commandline -f $till $fish_cmdline - for i in (seq 2 $count) - commandline -f $till repeat-jump - end -end - -function __fish_helix_find_next_cr -a mode count skip - set -l cursor (commandline -C) - commandline | # Include endling newline intentionally - # Skip until cursor: - sed -z 's/^.\{'(math $cursor + $skip)'\}\(.*\)$/\\1/' | - # Count characters up to the target newline: - sed -z 's/^\(\([^\\n]*\\n\)\{0,'$count'\}\).*/\\1/' | - read -zl chars - - if test $mode = default -a -n "$chars" - commandline -f begin-selection - end - for i in (seq 1 (string length -- "$chars")) - commandline -f forward-char - end -end - -function __fish_helix_find_prev_cr -a mode count skip - set -l cursor (commandline -C) - commandline --cut-at-cursor | - sed -z 's/.\{'$skip'\}\n$//' | - read -zl buffer - - echo -n $buffer | - # Drop characters up to the target newline: - sed -z 's/\(\(\\n[^\\n]*\)\{0,'$count'\}\)$//' | - read -zl chars - set -l n_chars (math (string length -- "$buffer") - (string length -- "$chars")) - - if test $mode = default -a $n_chars != 0 - commandline -f begin-selection - end - for i in (seq 1 $n_chars) - commandline -f backward-char - end -end - -function __fish_helix_goto_line_end - # check if we are on an empty line first - commandline | sed -n (commandline -L)'!b;/^$/q;q5' && return - commandline -f end-of-line backward-char -end - -function __fish_helix_goto_first_nonwhitespace - # check if we are on whitespace line first - commandline | sed -n (commandline -L)'!b;/^\\s*$/q;q5' && return - commandline -f beginning-of-line forward-bigword backward-bigword -end - -function __fish_helix_goto_line -a number - set -l lines (math min\($number, (commandline | wc -l)\)) - commandline -f beginning-of-buffer - for i in (seq 2 $lines) - commandline -f down-line - end - __fish_helix_extend_by_mode -end - -function __fish_helix_char_up -a mode count - if commandline --paging-mode && not commandline --search-mode - for i in (seq 1 $count) - commandline -f up-line - end - return - end - set -l line (commandline -L) - if commandline --search-mode || test $line = 1 - for i in (seq 1 (math min \($count, (count $history)\))) - commandline -f history-search-backward - end - return - end - set -l count (math min\($count, $line-1\)) - for i in (seq 1 $count) - commandline -f up-line - end - __fish_helix_extend_by_mode -end - -function __fish_helix_char_down -a mode count - if commandline --paging-mode && not commandline --search-mode - for i in (seq 1 $count) - commandline -f down-line - end - return - end - set -l line (commandline -L) - set -l total (count (commandline)) - if commandline --search-mode || test $line = $total - for i in (seq 1 (math min \($count, (count $history)\))) - commandline -f history-search-forward - end - return - end - set -l count (math min\($count, $total - $line\)) - for i in (seq 1 $count) - commandline -f down-line - end - __fish_helix_extend_by_mode -end - -function __fish_helix_next_word -a mode count regex - set -f cursor (commandline -C) - commandline | - perl -e ' - use open qw(:std :utf8); - do { local $/; substr <>, '$cursor' } =~ m/(?:'$regex'){0,'$count'}/ux; - print $-[1], " ", $+[1];' | - read -f left right - test "$left" = "$right" && return - if test $mode = default - commandline -C (math $cursor + $left) - commandline -f begin-selection - for i in (seq $left (math $right - 2)) - commandline -f forward-char - end - else - commandline -C (math $cursor + $right - 1) - end -end - -function __fish_helix_prev_word -a mode count regex - set -f left (math (commandline -C) + 1) - set -f updated 0 - for i in (seq 1 $count) - commandline | - perl -e ' - use open qw(:std :utf8); - do { local $/; substr <>, 0, '$left' } =~ /(?:'$regex')$/ux; - print $-[1], " ", $+[1];' | - read -l l r - test "$l" = "$r" -o "$l" = 0 -a "$r" = 1 && break - set -f left $l - set -f right $r - set -f updated 1 - end - test $updated -eq 0; and return - if test $mode = default - commandline -C (math $right - 1) - commandline -f begin-selection - for i in (seq $left (math $right - 2)) - commandline -f backward-char - end - else - commandline -C (math $left) - end -end - -function __fish_helix_delete_selection - set start (commandline -B) - set end (commandline -E) - commandline | - sed -zE 's/^(.{'$start'})(.{0,'(math $end - $start)'})(.*)\\n$/\\1\\3/' | - read -l result - - commandline "$result" - commandline -C $start - commandline -f begin-selection -end - -function __fish_helix_yank - set -l end (commandline -E) - set -l cursor (commandline -C) - commandline -f kill-selection yank backward-char - - for i in (seq $cursor (math $end - 2)) - commandline -f backward-char - end -end - -function __fish_helix_paste_before -a cmd_paste - set -l cmd_paste $(string split " " $cmd_paste) - set -l cursor (commandline -C) - set -l start (commandline -B) - set -l end (commandline -E) - commandline -C $start - $cmd_paste - commandline -f begin-selection - for i in (seq $start (math $end - 2)) - commandline -f forward-char - end - if test $cursor = $start - commandline -f swap-selection-start-stop - end -end - -function __fish_helix_paste_after -a cmd_paste - set -l cmd_paste $(string split " " $cmd_paste) - set -l cursor (commandline -C) - set -l start (commandline -B) - set -l end (commandline -E) - commandline -C $end - $cmd_paste - - if test "$argv[2]" = "--clip" - commandline -C (math $end - 1) - else - for i in (seq 0 (string length "$fish_killring[1]")) - commandline -f backward-char - end - end - commandline -f begin-selection - for i in (seq $start (math $end - 2)) - commandline -f backward-char - end - if test $cursor != $start - commandline -f swap-selection-start-stop - end -end - -function __fish_helix_replace_selection -a replacement cmd_paste - set -l cmd_paste $(string split " " $cmd_paste) - set cursor (commandline -C) - set start (commandline -B) - set end (commandline -E) - commandline | - sed -zE 's/^(.{'$start'})(.{0,'(math $end - $start)'})(.*)\\n$/\\1'"$(string escape --style=regex "$replacement")"'\\3/' | - read -l result - - commandline "$result" - commandline -C $start - $cmd_paste - - if test "$argv[3]" = --clip - commandline -f backward-char begin-selection - for i in (seq (math $start + 2) (commandline -C)) - commandline -f backward-char - end - if test $cursor != $start - commandline -f swap-selection-start-stop - end - else - commandline -f begin-selection - for i in (seq 2 (string length "$replacement")) - commandline -f forward-char - end - if test $cursor = $start - commandline -f swap-selection-start-stop - end - end -end diff --git a/.config/fish/functions/fish_helix_key_bindings.fish b/.config/fish/functions/fish_helix_key_bindings.fish deleted file mode 100644 index 1db46fbc..00000000 --- a/.config/fish/functions/fish_helix_key_bindings.fish +++ /dev/null @@ -1,304 +0,0 @@ -# IMPORTANT!!! -# -# When defining your own bindings using fish_helix_command, be aware that it can break -# stuff sometimes. -# -# It is safe to define a binding consisting of a lone call to fish_helix_command. -# Calls to other functions and executables are allowed along with it, granted they don't mess -# with fish's commandline buffer. -# -# Mixing multiple fish_helix_commandline and commandline calls in one binding MAY trigger issues. -# Nothing serious, but don't be surprised. Just test it. - -function fish_helix_key_bindings --description 'helix-like key bindings for fish' - if contains -- -h $argv - or contains -- --help $argv - echo "Sorry but this function doesn't support -h or --help" - return 1 - end - - # Erase all bindings if not explicitly requested otherwise to - # allow for hybrid bindings. - # This needs to be checked here because if we are called again - # via the variable handler the argument will be gone. - set -l rebind true - if test "$argv[1]" = --no-erase - set rebind false - set -e argv[1] - else - bind --erase --all --preset # clear earlier bindings, if any - end - - # Allow just calling this function to correctly set the bindings. - # Because it's a rather discoverable name, users will execute it - # and without this would then have subtly broken bindings. - if test "$fish_key_bindings" != fish_helix_key_bindings - and test "$rebind" = true - # Allow the user to set the variable universally. - set -q fish_key_bindings - or set -g fish_key_bindings - # This triggers the handler, which calls us again and ensures the user_key_bindings - # are executed. - set fish_key_bindings fish_helix_key_bindings - return - end - - set -l init_mode insert - - if contains -- $argv[1] insert default visual - set init_mode $argv[1] - else if set -q argv[1] - # We should still go on so the bindings still get set. - echo "Unknown argument $argv" >&2 - end - - # Inherit shared key bindings. - # Do this first so helix-bindings win over default. - for mode in insert default visual - __fish_shared_key_bindings -s -M $mode - end - # Add a way to switch from insert to normal (command) mode. - # Note if we are paging, we want to stay in insert mode - # See #2871 - set -l on_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 - ' - bind -s --preset -M insert escape $on_escape - bind -s --preset -M insert ctrl-\[ $on_escape - - bind -s --preset -M insert enter execute - - bind -s --preset -M insert "" self-insert - - # Space and other command terminators expand abbrs _and_ inserts itself. - bind -s --preset -M insert " " self-insert expand-abbr - bind -s --preset -M insert ";" self-insert expand-abbr - bind -s --preset -M insert "|" self-insert expand-abbr - bind -s --preset -M insert "&" self-insert expand-abbr - bind -s --preset -M insert "^" self-insert expand-abbr - bind -s --preset -M insert ">" self-insert expand-abbr - bind -s --preset -M insert "<" self-insert expand-abbr - # Closing a command substitution expands abbreviations - bind -s --preset -M insert ")" self-insert expand-abbr - # Ctrl-space inserts space without expanding abbrs - bind -s --preset -M insert -k nul 'commandline -i " "' - - # Switching to insert mode - for mode in default visual - bind -s --preset -M $mode -m insert \cc end-selection cancel-commandline repaint-mode - bind -s --preset -M $mode -m insert \n end-selection execute - bind -s --preset -M $mode -m insert \r end-selection execute - bind -s --preset -M $mode -m insert o end-selection insert-line-under repaint-mode - bind -s --preset -M $mode -m insert O end-selection insert-line-over repaint-mode - # FIXME i/a should keep selection, maybe - bind -s --preset -M $mode i "fish_helix_command insert_mode" - bind -s --preset -M $mode I "fish_helix_command prepend_to_line" - bind -s --preset -M $mode a "fish_helix_command append_mode" - bind -s --preset -M $mode A "fish_helix_command append_to_line" - end - - # Switching from insert mode - # Note if we are paging, we want to stay in insert mode - # See #2871 - bind -s --preset -M insert \e "if commandline -P; commandline -f cancel; else; set fish_bind_mode default; commandline -f begin-selection repaint-mode; end" - - # Switching between normal and visual mode - bind -s --preset -M default -m visual s repaint-mode - for key in s \e - bind -s --preset -M visual -m default $key repaint-mode - end - - # Motion and actions in normal/select mode - for mode in default visual - if test $mode = default - set -f n_begin_selection begin-selection # only begin-selection if current mode is Normal - set -f ns_move_extend move - set -f commandline_v_repaint "" - else - set -f n_begin_selection - set -f ns_move_extend extend - set -f commandline_v_repaint "commandline -f repaint-mode" - end - - for key in (seq 0 9) - bind -s --preset -M $mode $key "fish_bind_count $key" - # FIXME example to bind 0 - # FIXME backspace to edit count - end - for key in m \e\[D \eOD "-k left" - bind -s --preset -M $mode $key "fish_helix_command "$ns_move_extend"_char_left" - end - for key in i \e\[C \eOC "-k right" - bind -s --preset -M $mode $key "fish_helix_command "$ns_move_extend"_char_right" - end - for key in e \e\[A \eOA "-k up" - bind -s --preset -M $mode $key "fish_helix_command char_up" - end - for key in n \e\[B \eOB "-k down" - bind -s --preset -M $mode $key "fish_helix_command char_down" - end - - bind -s --preset -M $mode w "fish_helix_command next_word_start" - bind -s --preset -M $mode b "fish_helix_command prev_word_start" - bind -s --preset -M $mode l "fish_helix_command next_word_end" - bind -s --preset -M $mode W "fish_helix_command next_long_word_start" - bind -s --preset -M $mode B "fish_helix_command prev_long_word_start" - bind -s --preset -M $mode L "fish_helix_command next_long_word_end" - - bind -s --preset -M $mode t "fish_helix_command till_next_char" - bind -s --preset -M $mode f "fish_helix_command find_next_char" - bind -s --preset -M $mode T "fish_helix_command till_prev_char" - bind -s --preset -M $mode F "fish_helix_command find_prev_char" - - bind -s --preset -M $mode t\e "" - bind -s --preset -M $mode f\e "" - bind -s --preset -M $mode T\e "" - bind -s --preset -M $mode F\e "" - - for enter in \r \n - bind -s --preset -M $mode t$enter "fish_helix_command till_next_cr" - bind -s --preset -M $mode f$enter "fish_helix_command find_next_cr" - bind -s --preset -M $mode T$enter "fish_helix_command till_prev_cr" - bind -s --preset -M $mode F$enter "fish_helix_command find_prev_cr" - end - - for key in gm \e\[H \eOH "-k home" - bind -s --preset -M $mode $key "fish_helix_command goto_line_start" - end - for key in gi \e\[F \eOF "-k end" - bind -s --preset -M $mode $key "fish_helix_command goto_line_end" - end - bind -s --preset -M $mode gs "fish_helix_command goto_first_nonwhitespace" - bind -s --preset -M $mode gg "fish_helix_command goto_file_start" - bind -s --preset -M $mode G "fish_helix_command goto_line" - bind -s --preset -M $mode gl "fish_helix_command goto_last_line" - - # FIXME alt-. doesn't work with t/T - # FIXME alt-. doesn't work with [ftFT][\n\r] - bind -s --preset -M $mode \e. repeat-jump - - # FIXME reselect after undo/redo - bind -s --preset -M $mode u undo begin-selection - bind -s --preset -M $mode U redo begin-selection - - bind -s --preset -M $mode -m replace_one r repaint-mode - - # FIXME registers - # bind -s --preset -M $mode y fish_clipboard_copy - # bind -s --preset -M $mode P fish_clipboard_paste - # bind -s --preset -M $mode R kill-selection begin-selection yank-pop yank - - bind -s --preset -M $mode -m default d "fish_helix_command delete_selection; $commandline_v_repaint" - bind -s --preset -M $mode -m default \ed "fish_helix_command delete_selection_noyank; $commandline_v_repaint" - bind -s --preset -M $mode -m insert c "fish_helix_command delete_selection; commandline -f end-selection repaint-mode" - bind -s --preset -M $mode -m insert \ec "fish_helix_command delete_selection_noyank; commandline -f end-selection repaint-mode" - - bind -s --preset -M $mode -m default y "fish_helix_command yank" - bind -s --preset -M $mode p "fish_helix_command paste_after" - bind -s --preset -M $mode P "fish_helix_command paste_before" - bind -s --preset -M $mode R "fish_helix_command replace_selection" - - bind -s --preset -M $mode -m default " y" "fish_clipboard_copy; $commandline_v_repaint" - bind -s --preset -M $mode " p" "fish_helix_command paste_after_clip" - bind -s --preset -M $mode " P" "fish_helix_command paste_before_clip" - bind -s --preset -M $mode " R" "fish_helix_command replace_selection_clip" - - # FIXME keep selection - bind -s --preset -M $mode ~ togglecase-selection - # FIXME ` and \e` - - # FIXME . - # FIXME < and > - # FIXME = - - # FIXME \ca \cx - # FIXME Qq - - ## Shell - # FIXME - - ## Selection manipulation - # FIXME & _ - - bind -s --preset -M $mode \; begin-selection - bind -s --preset -M $mode \e\; swap-selection-start-stop - # FIXME \e: - - bind -s --preset -M $mode % "fish_helix_command select_all" - - # FIXME x X \ex - # FIXME J - # FIXME \cc - - ## Search - # FIXME - - ## FIXME minor modes: g, m, space - - ## FIXME [ and ] motions - end - - # FIXME should replace the whole selection - # FIXME should be able to go back to visual mode - bind -s --preset -M replace_one -m default '' delete-char self-insert backward-char repaint-mode - bind -s --preset -M replace_one -m default \r 'commandline -f delete-char; commandline -i \n; commandline -f backward-char; commandline -f repaint-mode' - bind -s --preset -M replace_one -m default \e cancel repaint-mode - - ## FIXME Insert mode keys - - ## Old config from vi: - - # Vi moves the cursor back if, after deleting, it is at EOL. - # To emulate that, move forward, then backward, which will be a NOP - # if there is something to move forward to. - bind -s --preset -M insert -k dc delete-char forward-single-char backward-char - bind -s --preset -M default -k dc delete-char forward-single-char backward-char - - # Backspace deletes a char in insert mode, but not in normal/default mode. - bind -s --preset -M insert -k backspace backward-delete-char - bind -s --preset -M default -k backspace backward-char - bind -s --preset -M insert \ch backward-delete-char - bind -s --preset -M default \ch backward-char - bind -s --preset -M insert \x7f backward-delete-char - bind -s --preset -M default \x7f backward-char - bind -s --preset -M insert -k sdc backward-delete-char # shifted delete - bind -s --preset -M default -k sdc backward-delete-char # shifted delete - - # bind -s --preset '~' togglecase-char forward-single-char - # bind -s --preset gu downcase-word - # bind -s --preset gU upcase-word - # - # bind -s --preset J end-of-line delete-char - # bind -s --preset K 'man (commandline -t) 2>/dev/null; or echo -n \a' - # - - # same vim 'pasting' note as upper - bind -s --preset '"*p' forward-char "commandline -i ( xsel -p; echo )[1]" - bind -s --preset '"*P' "commandline -i ( xsel -p; echo )[1]" - - # - # visual mode - # - - # bind -s --preset -M visual -m insert c kill-selection end-selection repaint-mode - # bind -s --preset -M visual -m insert s kill-selection end-selection repaint-mode - bind -s --preset -M visual -m default '"*y' "fish_clipboard_copy; commandline -f end-selection repaint-mode" - bind -s --preset -M visual -m default '~' togglecase-selection end-selection repaint-mode - - # Set the cursor shape - # After executing once, this will have defined functions listening for the variable. - # Therefore it needs to be before setting fish_bind_mode. - fish_vi_cursor - set -g fish_cursor_selection_mode inclusive - - set fish_bind_mode $init_mode - -end diff --git a/.config/fish/functions/fish_user_key_bindings.fish b/.config/fish/functions/fish_user_key_bindings.fish index 0bea8573..dc047d4a 100644 --- a/.config/fish/functions/fish_user_key_bindings.fish +++ b/.config/fish/functions/fish_user_key_bindings.fish @@ -15,7 +15,7 @@ function fish_user_key_bindings bind g,l end-of-buffer bind U redo - bind -M insert ctrl-r history-pager repaint-mode + # bind -M insert ctrl-r history-pager repaint-mode bind e up-or-search bind n down-or-search bind l 'set fish_cursor_end_mode exclusive' forward-single-char forward-word backward-char 'set fish_cursor_end_mode inclusive' diff --git a/.config/fish/functions/man.fish b/.config/fish/functions/man.fish index d3426095..82349b69 100644 --- a/.config/fish/functions/man.fish +++ b/.config/fish/functions/man.fish @@ -1,18 +1,12 @@ -# https://github.com/decors/fish-colored-man/tree/master function man --wraps man --description 'Format and display manual pages' - set -q man_blink; and set -l blink (set_color $man_blink); or set -l blink (set_color -o red) - set -q man_bold; and set -l bold (set_color $man_bold); or set -l bold (set_color -o B14242) - set -q man_standout; and set -l standout (set_color $man_standout); or set -l standout (set_color 949494) - set -q man_underline; and set -l underline (set_color $man_underline); or set -l underline (set_color -o D87C4A) - set -l end (printf "\e[0m") - set -lx LESS_TERMCAP_mb $blink - set -lx LESS_TERMCAP_md $bold + set -lx LESS_TERMCAP_mb (set_color -o red) + set -lx LESS_TERMCAP_md (set_color -o B14242) set -lx LESS_TERMCAP_me $end - set -lx LESS_TERMCAP_so $standout + set -lx LESS_TERMCAP_so (set_color 949494) set -lx LESS_TERMCAP_se $end - set -lx LESS_TERMCAP_us $underline + set -lx LESS_TERMCAP_us (set_color -o D87C4A) set -lx LESS_TERMCAP_ue $end set -lx LESS '-R -s'