VS代码VIM扩展名的复制和粘贴

时间:2019-10-09 14:04:40

标签: vim visual-studio-code vscodevim

是否有使用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"]
        },
    ], }

我希望它既可以在可视模式下也可以在正常模式下(用于粘贴)进行操作,并能够使用这些快捷方式从剪贴板中复制和粘贴。

如何正确执行此操作? 还有另一种方法吗?

3 个答案:

答案 0 :(得分:38)

Vim-扩展配置标志

将以下内容粘贴到VSCode的settings.json文件中:

"vim.useSystemClipboard": true

访问VSCode settings.json文件

  1. ctrl + ,(或转到File> Preferences> Settings)
  2. 单击右上角的图标:“带有箭头的文件”

VSCode access settings json file


Settings found in VSCodeVim/Vim repository quick-example

答案 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