Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there a way to get vim keybindings in powershell as you would in bash or zsh with a command like

set -o vi
share|improve this question
posted a possible answer here:… (Powershell ISE + vim), but more of a workaround – eli May 26 '15 at 12:10
up vote 6 down vote accepted

PowerShell is a runtime environment that can be hosted in things other than the default windows console. This means that it's enirely possible to create a VI like container for PowerShell (as far as I know nobody has done this yet). However there are some other richer experiences out there:

Or help out the community and write your own:

If I hear of a Vi style host I'll come back and update this answer.

share|improve this answer

I wouldn't swear that there isn't an undocumented feature of Powershell that allows this, but as far as I know the answer is no. At least I have never seen anything in Powershell documentation to suggest it's possible.


share|improve this answer

As it happens, you can load PowerShell syntax-highlighting into VIM. It's what I use for script development.

While it isn't in the shell itself, it's handy for building longer scripts. I have one window in VIM, and have a PowerShell prompt in another. I find it very handy.

share|improve this answer

The powershell engine now offers the hooks to make this relatively straightforward but I don't know of anyone who has done it yet.

The PSReadln project has an emergant emacs mode, though it is in its infancy. Adding a vi mode in PSReadln would be the obvious thing to do but I don't have time to devote to it.

share|improve this answer

PSReadline module provides this.

To install is simple not sure what the requirements are but I think at least windows 10 for this method provided. If you dont have OneGet or not sure you can follow the instructions at PSReadline

To install PSReadline without elevating privileges

Install-Module PsReadline -Scope CurrentUser

Check you have a powershell profile

Test-Path $PROFILE

If you dont create one

New-File -Type File $PROFILE



Add this line

Set-PSReadlineOption -EditMode vi

Reload $PROFILE or just restart powershell

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.