mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-30 17:41:14 -03:00
Commit 38e633d49b (fish_vi_key_bindings: add support for count,
2025-12-16) introduced an operator mode which kind of makes a lot of
sense for today's fish. If we end up needing more flexibility and
tighter integration, we might want to move some of this into core.
Unfortunately the change is at odds with our cursed forward-jump
implementation. The forward-jump special input function works by
magically reading the next key from stdin, which causes problems when
we are executing a script:
commandline -f begin-selection
commandline -f forward-jump
commandline -f end-selection
here end-selection will be executed immediately
and forward-jump fails to wait for a keystroke.
We should get rid of forward-jump implementation.
For now, replace only the broken thing with a dedicated bind mode
for each of f/F/t/T.
Fixes #12417
70 lines
2.0 KiB
ReStructuredText
70 lines
2.0 KiB
ReStructuredText
fish_mode_prompt - define the appearance of the mode indicator
|
|
==============================================================
|
|
|
|
Synopsis
|
|
--------
|
|
|
|
.. synopsis::
|
|
|
|
fish_mode_prompt
|
|
|
|
::
|
|
|
|
function fish_mode_prompt
|
|
echo -n "$fish_bind_mode "
|
|
end
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
The ``fish_mode_prompt`` function outputs the mode indicator for use in vi mode.
|
|
|
|
The default ``fish_mode_prompt`` function will output indicators about the current vi editor mode displayed to the left of the regular prompt. Define your own function to customize the appearance of the mode indicator. The ``$fish_bind_mode`` variable can be used to determine the current mode. It will be one of ``default``, ``insert``, ``replace_one``, ``replace``, ``visual``, or ``operator``.
|
|
|
|
You can also define an empty ``fish_mode_prompt`` function to remove the vi mode indicators::
|
|
|
|
function fish_mode_prompt; end
|
|
funcsave fish_mode_prompt
|
|
|
|
``fish_mode_prompt`` will be executed when the vi mode changes. If it produces any output, it is displayed and used. If it does not, the other prompt functions (:doc:`fish_prompt <fish_prompt>` and :doc:`fish_right_prompt <fish_right_prompt>`) will be executed as well in case they contain a mode display.
|
|
|
|
If :envvar:`fish_transient_prompt` is set to 1, ``fish_mode_prompt --final-rendering`` is run before executing the commandline.
|
|
|
|
Example
|
|
-------
|
|
|
|
|
|
|
|
::
|
|
|
|
function fish_mode_prompt
|
|
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 bryellow
|
|
echo 'R'
|
|
case visual
|
|
set_color --bold brmagenta
|
|
echo 'V'
|
|
case operator f F t T
|
|
set_color --bold cyan
|
|
echo 'N'
|
|
case '*'
|
|
set_color --bold red
|
|
echo '?'
|
|
end
|
|
set_color normal
|
|
end
|
|
|
|
|
|
Outputting multiple lines is not supported in ``fish_mode_prompt``.
|