在Visual Studio中,有许多方法可以实现这一点。以下是几种可用的不同钩子。- `IOleCommandTarget`:Visual Studio中的按键最终会呈现为命令,并通过此链路路由。 - `KeyProcessor`:对于直接的WPF键盘输入,您可以创建一个MEF `IKeyProcessorProvider`组件,并让创建的`KeyProcessor`处理输入。 - `ITextBuffer :: Changed`:直接侦听底层缓冲区中的更改以解释输入。每个都相当复杂,在SO问题中添加完整示例是不合理的。但只需将它们的名称输入Google,即可指向正确的方向。请注意,Visual Studio中的键盘输入是一个非常复杂的过程。它必须处理Windows消息、旧版Visual Studio命令、WPF、MEF钩子、翻译加速器等等... 它非常混乱,试图在任何一个阻塞点上处理所有输入都充满了问题。我在开发插件时尽力记录了Visual Studio键盘输入的当前状态,您可以在此处找到它。 https://github.com/jaredpar/VsVim/blob/master/Src/VsVim/KeyboardInputRouting.txt 然而这还远远不是一个完整的理解。