【发布时间】:2020-02-29 09:36:17
【问题描述】:
使用 VS Code,如何使用 Vim 键绑定向上或向下移动我所在的当前行(或当前选择)?正常使用编辑器时,我可以使用 'alt + up/down' 来实现。
我正在使用 vscodevim 扩展。
【问题讨论】:
标签: visual-studio-code text-editor vscodevim
使用 VS Code,如何使用 Vim 键绑定向上或向下移动我所在的当前行(或当前选择)?正常使用编辑器时,我可以使用 'alt + up/down' 来实现。
我正在使用 vscodevim 扩展。
【问题讨论】:
标签: visual-studio-code text-editor vscodevim
将以下内容添加到settings.json。它使用J 和K 在正常模式下向下/向上移动行。
"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 行为。
在 vim 中没有直接映射,但你可以做的是:
dd
p 跳过您删除的行。这应该可以解决问题。
【讨论】:
我认为这就是你想要的
将此添加到您的 .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
【讨论】:
我发现将以下内容添加到 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 或者只是移动光标会清除多余的选择。
【讨论】:
在 setting.json 中添加后对我有用
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["ctrl+j"],
"commands": ["editor.action.moveLinesDownAction"]
},
{
"before": ["ctrl+k"],
"commands": ["editor.action.moveLinesUpAction"]
}
]
【讨论】: