
Есть ли способ получить сочетания клавиш vim в PowerShell, как в bash или zsh, с помощью команды вроде
set -o vi
решение1
В наши дни у вас есть несколько вариантов. С консолью по умолчанию вы можете просто запустить Vim в Windows (она у вас уже может быть, если у вас установлены git или другие инструменты). Чтобы сделать интеграцию более гладкой, поместите это в свой профиль PowerShell:
$VIMEXEPATH = "c:\<location>\vim.exe"
Set-Alias vim $VIMEXEPATH
Set-Alias vi $VIMEXEPATH
Я также рекомендую добавить в ваш файл следующее vimrc
, чтобы он сам выполнял команды оболочки с помощью PowerShell.
set shell=powershell
set shellcmdflag=-command
В противном случае единственный ISE, который сейчас поддерживает режим Vi, этоPSReadLineтеперь доступно наPS Галерея
Естьпримечания по использованиюно вкратце для режима VI вам необходимо добавить следующую строку в ваш профиль ISE.
Set-PSReadlineOption -EditMode vi
Обратите внимание, что поддержка Vi была добавлена в версии 1.2, но версия 1.1 поставлялась с Windows 10. Для обновления поставляемой (т. е. установленной вручную) версии вам потребуется использовать параметр -force.
решение2
Модуль PSReadline обеспечивает это.
Установка проста, не уверен, каковы требования, но я думаю, что для этого метода предусмотрена как минимум Windows 10. Если у вас нет OneGet или вы не уверены, вы можете следовать инструкциям наPSReadline
Чтобы установить PSReadline без повышения привилегий
Install-Module PsReadline -Scope CurrentUser
Проверьте, есть ли у вас профиль PowerShell
Test-Path $PROFILE
Если вы его не создадите
New-Item -Type File $PROFILE
Открыть $PROFILE в ISE
ise $PROFILE
Добавьте эту строку
Set-PSReadlineOption -EditMode vi
Перезагрузите $PROFILE или просто перезапустите PowerShell.
& $PROFILE
решение3
Я бы не поклялся, что нет недокументированной функции Powershell, которая позволяет это, но насколько я знаю, ответ — нет. По крайней мере, я никогда не видел ничего в документации Powershell, что указывало бы на такую возможность.
Дж.Р.
решение4
Движок PowerShell теперь предлагает возможности, позволяющие сделать это относительно просто, но я не знаю никого, кто бы это уже сделал.
Проект PSReadln имеет эмерджентный режим emacs, хотя он находится в зачаточном состоянии. Добавление режима vi в PSReadln было бы очевидным решением, но у меня нет времени уделять этому.