Vi mode (READ: Allow selection keys to be rebound to different keys) #16028

Open
opened 2026-01-31 04:55:17 +00:00 by claunia · 6 comments
Owner

Originally created by @sapphire41 on GitHub (Dec 2, 2021).

Description of the new feature/enhancement

This issue suggests implementing a "Vi mode" similar to the very convenient one implemented by Alacritty, where the user can
move the cursor around, select and copy text using the keyboard alone in a fashion familiar to most programmers and power users;

  • The user presses a predefined keyboard shortcut to enter Vi mode
  • Once in Vi mode, the cursor is movable in the current terminal buffer using Vi motions (h j k l)
  • 'V' enters visual mode, where text can be selected and copied ('y')
  • '/' and '?' enter search mode where text can be searched and then copied
Originally created by @sapphire41 on GitHub (Dec 2, 2021). # Description of the new feature/enhancement This issue suggests implementing a "Vi mode" similar to the very convenient one implemented by Alacritty, where the user can move the cursor around, select and copy text using the keyboard alone in a fashion familiar to most programmers and power users; * The user presses a predefined keyboard shortcut to enter Vi mode * Once in Vi mode, the cursor is movable in the current terminal buffer using Vi motions (h j k l) * 'V' enters visual mode, where text can be selected and copied ('y') * '/' and '?' enter search mode where text can be searched and then copied
claunia added the Issue-FeatureArea-SettingsProduct-Terminal labels 2026-01-31 04:55:17 +00:00
Author
Owner

@zadjii-msft commented on GitHub (Dec 2, 2021):

OH HEY LOOK GUYS, SOMEONE WHO WANTED TO REBIND THE MARK MODE KEYBINDINGS

Sorry, that's not directed at you, that's directed at the team. We've been having this discussion for a while now. @DHowett @carlos-zamora

linking to #10824, #715, #2840, #5804

@zadjii-msft commented on GitHub (Dec 2, 2021): OH HEY LOOK GUYS, SOMEONE WHO WANTED TO REBIND THE MARK MODE KEYBINDINGS Sorry, that's not directed at you, that's directed at the team. We've been having this discussion for a while now. @DHowett @carlos-zamora linking to #10824, #715, #2840, #5804
Author
Owner

@zadjii-msft commented on GitHub (Dec 8, 2021):

Also linking this to #9301, #11084, #9301 and MOST IMPORTANTLY #5790.

We discussed today and had ideas for:

  • different keymaps
  • keybindings that can switch between those keymaps
  • allowing the selection keybindings to get rebound
  • minimizing the appearance of all the selection keybindings in the SUI. Either use the SUI to pick between "Default, vi, emacs" selection bindings, or use the json to edit manually.

I'm gonna leave this open to track the third bullet point, because we agree we're open to the idea of rebinding the keys, so long as the SUI impact is relatively low (it's something like 12-30 actions in the SUI, which is a lot).

@zadjii-msft commented on GitHub (Dec 8, 2021): Also linking this to #9301, #11084, #9301 and MOST IMPORTANTLY #5790. We discussed today and had ideas for: * different keymaps * keybindings that can switch between those keymaps * allowing the selection keybindings to get rebound * minimizing the appearance of all the selection keybindings in the SUI. Either use the SUI to pick between "Default, vi, emacs" selection bindings, or use the json to edit manually. I'm gonna leave this open to track the third bullet point, because we agree we're open to the idea of rebinding the keys, so long as the SUI impact is relatively low (it's something like 12-30 actions in the SUI, which is a _lot_).
Author
Owner

@sisrfeng commented on GitHub (Feb 21, 2022):

:term of neovim is easy to use, and I use neovim-remote and abduco, making the register easier to use (do not need to specify a register for most time)

I do not use tmux anymore

@sisrfeng commented on GitHub (Feb 21, 2022): `:term` of neovim is easy to use, and I use neovim-remote and abduco, making the register easier to use (do not need to specify a register for most time) I do not use tmux anymore
Author
Owner

@ghost commented on GitHub (Aug 17, 2023):

Really looking forward to this

@ghost commented on GitHub (Aug 17, 2023): Really looking forward to this
Author
Owner

@xuejiaW commented on GitHub (Jan 10, 2024):

+1
I have tried to use Poweroys keyboard manager + markmode to work around this feature, something like remapping "ctrl+h" to "arrow left"
image

but no luck, once i press "ctrl+h", the mark mode will exit, so it not works

@xuejiaW commented on GitHub (Jan 10, 2024): +1 I have tried to use Poweroys keyboard manager + markmode to work around this feature, something like remapping "ctrl+h" to "arrow left" ![image](https://github.com/microsoft/terminal/assets/26690881/ce0c4c71-9f75-4dc9-ada4-02b25a2c6e63) but no luck, once i press "ctrl+h", the mark mode will exit, so it not works
Author
Owner

@brentksusco commented on GitHub (Sep 30, 2025):

We discussed today and had ideas for:

  • different keymaps
  • keybindings that can switch between those keymaps
  • allowing the selection keybindings to get rebound
  • minimizing the appearance of all the selection keybindings in the SUI. Either use the SUI to pick between "Default, vi, emacs" selection bindings, or use the json to edit manually.

I'm gonna leave this open to track the third bullet point, because we agree we're open to the idea of rebinding the keys, so long as the SUI impact is relatively low (it's something like 12-30 actions in the SUI, which is a lot).

I know this is pretty old, but this ability would be highly appreciated. Especially options 3 or 4.

@brentksusco commented on GitHub (Sep 30, 2025): > We discussed today and had ideas for: > > * different keymaps > * keybindings that can switch between those keymaps > * allowing the selection keybindings to get rebound > * minimizing the appearance of all the selection keybindings in the SUI. Either use the SUI to pick between "Default, vi, emacs" selection bindings, or use the json to edit manually. > > I'm gonna leave this open to track the third bullet point, because we agree we're open to the idea of rebinding the keys, so long as the SUI impact is relatively low (it's something like 12-30 actions in the SUI, which is a _lot_). I know this is pretty old, but this ability would be highly appreciated. Especially options 3 or 4.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#16028