是否有 Windows 下的终端支持 Vim 式运动?

Linux 下的 bash 可用 set -o vi 召唤出 Vim 式运动。在这个模式下,我就可以用 h, j, k, l 分别向左、下、上、右移动,并且还支持别的一些 Vim 式操作。那么,Windows 下有没有这样的东西呢?

gitbash 下可以,cygwin shell 下也可以。

对应的 emacs 是 set -o emacs

但是,没有状态显示,如何做到 vim 的那种 normal mode, insert mode 的状态提示呢?

vim 如果做不到状态显示,那这时,emacs 就更好用一些。不需要判断当前状态。

这是个很不错的技巧,但我发现一个问题,把这条命令放入配置文件 ~/.zshrc 中时,如果没有把 set -o vi 放在最后一行,那么 ESCctrl+[ 键只能短暂进入 Normal mode,仅一个键。

1 Like

早。刚刚体验了您提到的二个应用。

的确,我确实可以用 cygwin shell 或 git bash。不过,我也才意识到,因为不显示当前的状态,所以这个 Vim 模式并不是十分理想。再者,我主要用命令提示符。我的本意是希望我能在命令提示符(若有必要,也可 PowerShell)的时候也能有 Vim 模式。

其实我是希望 Vim 模式能帮我方便地浏览长长的输出结果的。当然了,我知道,我可以手动用别的工具看输出。Windows 下有 bat:

而且,我也希望能对终端的 Vim 模式作出适当的修改。比方说,我想在 Insert Mode 下按 jj 进入 Normal Mode。

在 Windows 10 中,Powershell 已默认集成 PSReadLine 工具,调用该工具可以使用 vi 模式。

# 安装最新版
Install-Module -Name PowerShellGet -Force
# 如果之前没有配置文件,就新建一个 Powershell 配置文件
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
# 用记事本打开配置文件
notepad $PROFILE

在配置文件中写入

Import-Module PSReadLine
Set-PSReadLineOption -EditMode Vi

然后重启就会生效了。

官方链接:

1 Like

感谢您的回复。的确,这几乎复刻了 bash 的 set -o emacs


看了看文档,我自行作了一些别的配置。真不错!不过,要是能清楚地区分 Insert Mode 跟 Visual Mode 就好了。