Merge pull request 'feat(keybind): recall last history entry on empty prompt for ctrl-alt-u' (#162) from feat/replace-command-token-empty-recall into main
This commit was merged in pull request #162.
This commit is contained in:
@@ -29,8 +29,11 @@ are active in Insert, Normal, and Visual modes unless noted.
|
|||||||
|
|
||||||
Ctrl+Alt+U Strip the first token of the current command line,
|
Ctrl+Alt+U Strip the first token of the current command line,
|
||||||
leaving arguments in place with the cursor at the
|
leaving arguments in place with the cursor at the
|
||||||
start. Useful for quickly retyping the command.
|
start. Useful for quickly retyping the command. On
|
||||||
|
an empty command line, first recalls the most recent
|
||||||
|
history entry (like Up), then strips its first token.
|
||||||
Example: "mkdir new_folder" -> " new_folder"
|
Example: "mkdir new_folder" -> " new_folder"
|
||||||
|
Example: empty line after "cd /home/me" -> " /home/me"
|
||||||
|
|
||||||
Ctrl+Alt+= Evaluate the current command line buffer with
|
Ctrl+Alt+= Evaluate the current command line buffer with
|
||||||
Qalculate! (qalc) and print the result inline.
|
Qalculate! (qalc) and print the result inline.
|
||||||
|
|||||||
@@ -7,7 +7,9 @@
|
|||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
# Removes the first command token from the commandline buffer and
|
# Removes the first command token from the commandline buffer and
|
||||||
# positions the cursor for immediate replacement. If the command starts
|
# positions the cursor for immediate replacement. If the command starts
|
||||||
# with sudo, preserves sudo and removes the token after it instead.
|
# with sudo, preserves sudo and removes the token after it instead. If
|
||||||
|
# the commandline is empty, first recalls the most recent history entry
|
||||||
|
# (like pressing Up) before doing the token replacement on it.
|
||||||
# Intended to be bound to a key in key_bindings.fish.
|
# Intended to be bound to a key in key_bindings.fish.
|
||||||
#
|
#
|
||||||
# EXAMPLE
|
# EXAMPLE
|
||||||
@@ -15,6 +17,12 @@
|
|||||||
function _replace_command_token --description 'Remove first command token (or first after sudo) and place cursor for replacement'
|
function _replace_command_token --description 'Remove first command token (or first after sudo) and place cursor for replacement'
|
||||||
set -l cmd (commandline)
|
set -l cmd (commandline)
|
||||||
|
|
||||||
|
# Empty prompt: recall the last history entry first, same as it would
|
||||||
|
# behave if that command were already on the commandline.
|
||||||
|
if string match -rq '^\s*$' -- "$cmd"
|
||||||
|
set cmd (history --max 1)
|
||||||
|
end
|
||||||
|
|
||||||
# 1. Logic for commands starting with sudo
|
# 1. Logic for commands starting with sudo
|
||||||
if string match -rq '^sudo\s+' -- "$cmd"
|
if string match -rq '^sudo\s+' -- "$cmd"
|
||||||
# regex explanation:
|
# regex explanation:
|
||||||
|
|||||||
Reference in New Issue
Block a user