6

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

我正在使用 vscodevim 扩展。

4

5 回答 5

3

将以下内容添加到settings.json. 它使用JK在正常模式下向下/向上移动行。

"vim.normalModeKeyBindingsNonRecursive": [
    {
        "before": ["J"],
        "commands": ["editor.action.moveLinesDownAction"]
    }, // moveLineDown
    {
        "before": ["K"],
        "commands": ["editor.action.moveLinesUpAction"]
    } // moveLineUp
],
于 2021-07-20T03:12:54.297 回答
2

我认为这就是你想要的

将此添加到您的 .vimrc

" Move lines up and down
nnoremap <C-Down> :m .+1<CR>==
nnoremap <C-Up> :m .-2<CR>==
inoremap <C-Down> <Esc>:m .+1<CR>==gi
inoremap <C-Up> <Esc>:m .-2<CR>==gi
vnoremap <C-Down> :m '>+1<CR>gv=gv
vnoremap <C-Up> :m '<-2<CR>gv=gv

来源:https ://vim.fandom.com/wiki/Moving_lines_up_or_down

于 2020-02-29T18:28:06.160 回答
2

我发现在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"
    },

我要补充一点,当在可视模式下选择了多行时,向上移动时似乎在其下方选择了,我不知道为什么。escape或者只是移动光标会清除额外的选择。

于 2020-08-17T04:44:29.513 回答
2

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

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

这应该够了吧。

于 2020-02-29T10:51:34.273 回答
0

在 setting.json 中添加后对我有用

   "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": ["ctrl+j"],
            "commands": ["editor.action.moveLinesDownAction"]
        },
        {
            "before": ["ctrl+k"],
            "commands": ["editor.action.moveLinesUpAction"]
        }
    ]
于 2021-09-16T13:59:27.787 回答