是否有使用vim扩展名复制和粘贴vs代码的正常方法?
我尝试将VIM注册命令映射到我惯用的快捷方式命令(用于复制的ctrl + c和用于粘贴的ctrl + v),但是结果非常奇怪,我不确定如何执行此操作正确。
使用vim时,键绑定非常简单, vimrc文件:
map <C-c> "+y
map <C-v> "+p
现在,我尝试通过编辑json.settings文件将其迁移到vs代码:
{
"vim.visualModeKeyBindings": [
{
"before": ["<C-c>"],
"after": ["\"", "+", "y"]
},
{
"before": ["<C-v>"],
"after": ["\"", "+", "p"]
},
], }
我希望它既可以在可视模式下也可以在正常模式下(用于粘贴)进行操作,并能够使用这些快捷方式从剪贴板中复制和粘贴。
如何正确执行此操作? 还有另一种方法吗?
答案 0 :(得分:38)
将以下内容粘贴到VSCode的settings.json
文件中:
"vim.useSystemClipboard": true
访问VSCode settings.json文件
ctrl + ,
(或转到File> Preferences> Settings)答案 1 :(得分:2)
除了重新绑定外,您还可以完全停止vscodevim
扩展名来完全处理 Ctrl-C 和 Ctrl-V ,然后让VSCode处理它们本机。可以通过将以下代码放入扩展程序的settings.json
文件中来完成此操作:
"vim.handleKeys": {
"<C-c>": false,
"<C-v>": false
}
无论您处于哪种模式,它都可以工作,并且可以完美容纳系统剪贴板。我不确定<C-c>
是否必要,但<C-v>
肯定是必要的,因为<C-v>
是进入可视块模式的标准Vim和弦。
顺便说一句,您的rebind方法非常有效;它只需要更多代码:
// For visual mode
"vim.visualModeKeyBindings": [
{
"before": ["<C-c>"],
"after": ["\"", "+", "y"]
},
{
"before": ["<C-v>"],
"after": ["\"", "+", "p"]
}
],
// For normal mode
"vim.normalModeKeyBindings": [
{
"before": ["<C-c>"],
"after": ["\"", "+", "y"]
},
{
"before": ["<C-v>"],
"after": ["\"", "+", "p"]
}
]
答案 2 :(得分:0)
使用vs代码默认复制,粘贴,删除行。
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["d","d"],
"commands":["editor.action.deleteLines"],
"when":"textInputFocus && !editorReadonly"
},
{
"before":["y"],
"commands":["editor.action.clipboardCopyAction"],
"when":"textInputFocus"
},
{
"before":["y","y"],
"commands":["editor.action.clipboardCopyAction"],
"when":"textInputFocus"
},
{
"before":["p"],
"commands":["editor.action.clipboardPasteAction"],
"when":"textInputFocus && !editorReadonly"
}
],
"vim.visualModeKeyBindingsNonRecursive":[
{
"before":["y"],
"commands":["editor.action.clipboardCopyAction"],
"when":"textInputFocus"
},
{
"before":["y","y"],
"commands":["editor.action.clipboardCopyAction"],
"when":"textInputFocus"
},
{
"before":["x"],
"commands":["deleteRight"],
"when":"textInputFocus"
},
]
https://github.com/VSCodeVim/Vim/#key-remapping https://code.visualstudio.com/docs/getstarted/keybindings