diff --git a/fish.configlink/functions/up-or-search.fish b/fish.configlink/functions/up-or-search.fish new file mode 100644 index 0000000..502c8ce --- /dev/null +++ b/fish.configlink/functions/up-or-search.fish @@ -0,0 +1,29 @@ +# by @farcaller from https://github.com/fish-shell/fish-shell/issues/825#issuecomment-440286038 + +function up-or-search -d "Depending on cursor position and current mode, either search backward or move up one line" + # If we are already in search mode, continue + if commandline --search-mode + commandline -f history-search-backward + return + end + + # If we are navigating the pager, then up always navigates + if commandline --paging-mode + commandline -f up-line + return + end + + # We are not already in search mode. + # If we are on the top line, start search mode, + # otherwise move up + set lineno (commandline -L) + + switch $lineno + case 1 + commandline -f history-search-backward + history merge # <-- ADDED THIS + + case '*' + commandline -f up-line + end +end