【问题标题】:How to move current line up or down in vim for vscode如何在vim中为vscode向上或向下移动当前行
【发布时间】:2020-02-29 09:36:17
【问题描述】:

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

我正在使用 vscodevim 扩展。

【问题讨论】:

    标签: visual-studio-code text-editor vscodevim


    【解决方案1】:

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

    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": ["J"],
            "commands": ["editor.action.moveLinesDownAction"]
        }, // moveLineDown
        {
            "before": ["K"],
            "commands": ["editor.action.moveLinesUpAction"]
        } // moveLineUp
    ],
    

    【讨论】:

    • 要使用 Control 键而不是 Shift 使用 "<C-j>" "<C-k>" 而不是 "J", "K" 对我来说这是默认的 vim 行为。
    【解决方案2】:

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

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

    这应该可以解决问题。

    【讨论】:

    • 我担心这将成为解决方案。感谢您的回复:)
    【解决方案3】:

    我认为这就是你想要的

    将此添加到您的 .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

    【讨论】:

      【解决方案4】:

      我发现将以下内容添加到 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 或者只是移动光标会清除多余的选择。

      【讨论】:

        【解决方案5】:

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

           "vim.normalModeKeyBindingsNonRecursive": [
                {
                    "before": ["ctrl+j"],
                    "commands": ["editor.action.moveLinesDownAction"]
                },
                {
                    "before": ["ctrl+k"],
                    "commands": ["editor.action.moveLinesUpAction"]
                }
            ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多