如何在 vim 中为 vscode 向上或向下移动当前行

Hay*_*den 5 text-editor visual-studio-code vscodevim

使用 VS Code,如何使用 Vim 键绑定向上或向下移动我所在的当前行(或当前选择)?正常使用编辑器时,我可以使用“alt + up/down”来实现这一点。

我正在使用 vscodevim 扩展。

小智 7

将以下内容添加到settings.json. 在正常模式下,它使用J和K来向下/向上移动线路。

"vim.normalModeKeyBindingsNonRecursive": [
    {
        "before": ["J"],
        "commands": ["editor.action.moveLinesDownAction"]
    }, // moveLineDown
    {
        "before": ["K"],
        "commands": ["editor.action.moveLinesUpAction"]
    } // moveLineUp
],
Run Code Online (Sandbox Code Playgroud)

  • 要使用 `Control` 键而不是 `Shift`,请使用 `"<Cj>"` `"<Ck>"` 而不是 `"J"`、`"K"` 对我来说这是默认的 vim 行为。 (2认同)

stu*_*eek 5

我发现将以下内容添加到作品中keybindings.json。它将按键重新映射回本机 Visual Studio Code 移动线命令。在此示例中,我使用 Command-Alt-Up/Down,但理论上您可以按照您的要求将映射更改为 Alt-Up/Down。

    {
        "key": "cmd+alt+up",
        "command": "editor.action.moveLinesUpAction",
        "when": "editorTextFocus && !editorReadOnly"
    },
    {
        "key": "cmd+alt+down",
        "command": "editor.action.moveLinesDownAction",
        "when": "editorTextFocus && !editorReadOnly"
    },
Run Code Online (Sandbox Code Playgroud)

我要补充的是,当在视觉模式下选择多行时,向上移动时似乎会在其下方选择,我不确定为什么。escape或者仅移动光标即可清除多余的选择。


San*_*ove 2

在 vim 中没有直接映射,但你可以做的是:

  • 将光标放在要移动的行上。
  • 使用以下命令删除该行:dd
  • 然后转到您要放置它的位置之前的行。
  • 按p可跳过已删除的行。

这应该够了吧。

  • 我担心这必须是解决方案。感谢您的回复:) (3认同)