You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neovim可视化模式下自动同步选中内容至X11缓冲区的配置方案

实现Neovim可视化模式选中文本自动同步到X11缓冲区

针对你需要在可视化模式(字符/行/块模式)下自动将选中内容同步到X11主缓冲区(支持鼠标中键粘贴)的需求,以下是优化后的配置方案,解决触发频繁、块模式适配差、选中状态丢失的问题:

配置代码

local visual_autocmd_group = vim.api.nvim_create_augroup("VisualAutoCopy", { clear = true })

vim.api.nvim_create_autocmd("ModeChanged", {
  group = visual_autocmd_group,
  pattern = { "*:v", "*:V", "*:<C-V>", "v:*", "V:*", "<C-V>:*" },
  callback = function()
    if vim.fn.mode():match("[vV]") then
      vim.defer_fn(function()
        if vim.fn.mode():match("[vV]") then
          -- 复制选中内容到X11主缓冲区(*寄存器)
          vim.cmd('normal! "*y')
          -- 恢复选中状态
          vim.cmd('normal! gv')
        end
      end, 50)
    end
  end,
})

方案说明

  1. 精准事件触发:使用ModeChanged事件,匹配所有进入可视化模式(*:v/*:V/*:<C-V>)以及可视化模式内切换子模式(v:*等)的场景,避免CursorMoved的频繁触发问题。
  2. 延迟执行优化:通过vim.defer_fn设置50ms延迟,确保光标移动稳定后再执行复制,既保证响应速度,又减少不必要的触发。
  3. 适配所有可视模式:vim.fn.mode():match("[vV]")匹配字符、行、块三种可视化模式,normal! "*y会自动适配当前模式复制对应内容。
  4. 保留选中状态:复制后执行gv命令恢复选中状态,解决原方案破坏初始选中的问题。

验证方式

  1. 按v/V/<C-V>进入对应可视化模式
  2. 用hjkl/wb等命令调整选中范围
  3. 直接在终端外点击鼠标中键即可粘贴最新选中的内容

内容的提问来源于stack exchange,提问作者VRehnberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:43:26