如何使用 vscode vim 使 <Ck> 在代码建议/提示中“向上滚动”而不是使用箭头键?

amy*_*amy 7 visual-studio-code vscodevim

VScodevimextension.vim_ctrl+j默认情况下映射到 Ctrl+j,它允许您向下导航弹出代码建议窗口(通过在插入模式下按 Ctrl+空格键触发),如下所示:

图像

它还extension.vim_ctrl+k映射到 Ctrl+k,但这种向下绑定不起作用,因此我无法滚动弹出代码建议窗口。在插入模式下默认输入有向,但只需添加类似这样的内容

    {
      "before": ["<C-k>"],
      "after": ["extension.vim_ctrl+k"]
    }
Run Code Online (Sandbox Code Playgroud)

to mysettings.json不起作用,因为虽然它删除了有向图功能,但据我了解,每当我现在在插入模式下按 Ctrl+k 时,VSCode 都会查阅settings.json,找到到“extension.vim_ctrl+k”的映射,将其指向回进入settings.json一种无限循环。

:h i_ctrl-j在 vim 中显示此键绑定被映射到“开始新行”,因此 VScode 似乎将“开始新行”解释为在插入模式下向下导航弹出窗口,而不是创建新行并移动光标的通常 vim 行为在那里,虽然不确定这是如何工作的。无论如何,我找不到 VSCode 可以用来在弹出窗口中向上滚动的等效 vim 命令。任何帮助将非常感激!

Ham*_*thy 5

我通过复制现有的默认键绑定来完成此工作,ctrl+p默认ctrl+n情况下,在整个 VSCode 中使用这些键绑定来上下滚动。

我在我的文件中使用了alt这里keybinds.json,但您可以轻松替换它ctrl以实现您想要的

键绑定.json

// Down Motion
{
  "key": "alt+j",
  "command": "cursorDown",
  "when": "textInputFocus"
},
{
  "key": "alt+j",
  "command": "showNextParameterHint",
  "when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible"
},
{
  "key": "alt+j",
  "command": "selectNextSuggestion",
  "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
},
{
  "key": "alt+j",
  "command": "list.focusDown",
  "when": "listFocus && !inputFocus"
},
{
  "key": "alt+j",
  "command": "workbench.action.quickOpenSelectNext",
  "when": "inQuickOpen"
},

// Up Motion
{
  "key": "alt+k",
  "command": "cursorUp",
  "when": "textInputFocus"
},
{
  "key": "alt+k",
  "command": "showPrevParameterHint",
  "when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible"
},
{
  "key": "alt+k",
  "command": "selectPrevSuggestion",
  "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
},
{
  "key": "alt+k",
  "command": "list.focusUp",
  "when": "listFocus && !inputFocus"
},
{
  "key": "alt+k",
  "command": "workbench.action.quickOpenSelectPrevious",
  "when": "inQuickOpen"
}
Run Code Online (Sandbox Code Playgroud)