4

PowerShell で Bash からキーバインドを取得するために、PowerShell 用の PSReadline モジュールをインストールしました。Vi-Mode を有効にしましたが、問題なく動作しています。

問題は次のとおりです。Vimでは、挿入モードを終了するために常にj、kを使用します。つまり、最初に j を入力し、次に k を非常に速く入力します。本当に j と k を入力したい場合は、j を入力した後、タイムアウトになるまで待ちます。

PSReadline の Vi-Mode で同じことを行うにはどうすればよいですか? 私はすでに試しました:Set-PSReadlineKeyHandler -Chord 'j', 'k' ViCommandModeが、入力できなくなりましたjorkもう。何か案は?

4

2 に答える 2

1

これを実現するには、$Profile に以下を記述します。

Set-PSReadLineKeyHandler -Chord 'j' -ScriptBlock {
  if ([Microsoft.PowerShell.PSConsoleReadLine]::InViInsertMode()) {
    $key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    if ($key.Character -eq 'k') {
      [Microsoft.PowerShell.PSConsoleReadLine]::ViCommandMode()
    }
    else {
      [Microsoft.Powershell.PSConsoleReadLine]::Insert('j')
      [Microsoft.Powershell.PSConsoleReadLine]::Insert($key.Character)
    }
  }
}

ただし、これにより「j」の貼り付けで問題が発生する場合があります。

于 2020-02-12T16:25:23.773 に答える