PSReadLine icon indicating copy to clipboard operation
PSReadLine copied to clipboard

Vi Mode: Allow setting "Cursor" and "Prompt" ViModeIndicator at the same time

Open sebastiancarlos opened this issue 2 months ago • 0 comments

Prerequisites

  • [x] Write a descriptive title.

Description of the new feature/enhancement

Currently you can do both:

Set-PSReadLineOption -ViModeIndicator Cursor

and,

Set-PSReadLineOption -ViModeIndicator Prompt

But you can't set both at the same time.

Note that this is possible with readline, for example with:

set editing-mode vi

# vi INSERT prompt
# - "\e[6 q" is line caret
# - "\e[30;44m" is black on blue
# - "\e[0m" is reset
# = "\1" and "\2" are used to escape the non-printing characters
set vi-ins-mode-string "\1\e[6 q\e[30;44m\2 INS \1\e[0m\2 "

# vi NORMAL prompt
# - "\e[2 q" is block caret
# - "\e[30;47m" is black on white
# - "\e[0m" is reset
# = "\1" and "\2" are used to escape the non-printing characters
set vi-cmd-mode-string "\1\e[2 q\e[30;47m\2 NOR \1\e[0m\2 "

I understand that you can run a script block on -ViModeChangeHandler, but it's not trivial how to programatically change the already rendered prompt when this fires.

Proposed technical implementation details (optional)

No response

sebastiancarlos avatar Nov 06 '25 16:11 sebastiancarlos