VS Code VIM 扩展复制粘贴

ser*_*rar 37 vim visual-studio-code vscodevim

是否有使用 vim 扩展名复制和粘贴 vs 代码的正常方法?

我尝试将 VIM 寄存器命令映射到我习惯的快捷命令(ctrl + c 用于复制,ctrl + v 用于粘贴),但结果非常奇怪,我不确定如何正确执行此操作。

使用 vim 时,键绑定非常简单,vimrc 文件:

map <C-c> "+y
map <C-v> "+p
Run Code Online (Sandbox Code Playgroud)

现在我尝试通过编辑 json.settings 文件将它们迁移到 vs-code:

{
    "vim.visualModeKeyBindings": [
        {
            "before": ["<C-c>"],
            "after": ["\"", "+", "y"]
        },
        {
            "before": ["<C-v>"], 
            "after":  ["\"", "+", "p"]
        },
    ], }
Run Code Online (Sandbox Code Playgroud)

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

如何正确地做到这一点?有没有另一种方法可以做到这一点?

Bra*_*age 84

Vim - 扩展配置标志

将以下内容粘贴到您的 VS Codesettings.json文件中:

"vim.useSystemClipboard": true
Run Code Online (Sandbox Code Playgroud)

访问 VSCodesettings.json文件

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

VSCode 访问设置 json 文件


在 VSCodeVim/Vim 存储库快速示例中找到的设置

  • 这个答案比将 `&lt;Cc&gt;` 和 `&lt;Cv&gt;` 重新绑定到 `false` 更好,因为它保留了可视块模式的快捷方式。 (12认同)
  • 快捷方式:进入设置,搜索“vim Clip”,勾选勾。 (2认同)

Das*_*eek 49

而不是重新绑定,您可以简单地停止vscodevim处理Ctrl-CCtrl-V完全扩展,然后允许 VSCode 本地处理它们。这可以通过将以下代码放在扩展settings.json文件中来完成:

"vim.handleKeys": {
    "<C-c>": false,
    "<C-v>": false
}
Run Code Online (Sandbox Code Playgroud)

无论您处于哪种模式,这都可以使用,并且可以完美地适应系统剪贴板。我不确定是否<C-c>有必要,但<C-v>绝对有必要,就像<C-v>进入视觉块模式的标准 Vim 和弦一样。

顺便说一句,您的重新绑定方法是完全有效的;它只需要更多的代码:

// 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"]
  }
]
Run Code Online (Sandbox Code Playgroud)

  • 为了节省您在 OS X 上的浏览​​时间:映射 `"before": ["&lt;Cv&gt;"]` 变为 `"before": ["&lt;Dv&gt;"]` 因为 Vim 将命令键视为 " D”。打开 vim 并输入 `:help &lt;D-` 了解更多详细信息。 (3认同)