Gvim 实现鼠标选中后自动复制到系统剪切板

前置检查

  1. 首先确认你的GVim编译时包含clipboard特性
:version

查看结果中是否包含+clipboard(如果没有需要重新编译或更换版本)

方法一:设置剪贴板选项(推荐)

在vimrc中添加:

" Windows系统
if has('win32')
    set clipboard=unnamed
else " Linux/Mac系统
    set clipboard=unnamedplus
endif

方法二:使用鼠标映射

在vimrc中添加:

" 自动复制选中文本到剪贴板
vnoremap <LeftRelease> "*y
vnoremap <2-LeftRelease> <Nop> " 保留中键粘贴功能

" Mac系统需要特殊处理
if has('mac')
    set clipboard+=unnamed
    vnoremap <LeftRelease> "+y
endif

方法三:使用自动命令

在vimrc中添加(适用于更复杂场景):

augroup AutoYank
    autocmd!
    autocmd TextYankPost * if v:event.operator == 'y' && v:event.regname == '' | let @" = @* | endif
augroup END

功能验证

  1. 重启GVim生效
  2. 进入可视模式(鼠标拖选或Shift+方向键)
  3. 选中文字后立即会在系统剪贴板中生效

注意事项

  1. Windows和Linux使用不同剪贴板寄存器:
    • Windows:"*
    • Linux/Mac:"+
  2. 可以通过:reg命令查看寄存器内容
  3. 或按<Ctrl+v>测试是否可以直接粘贴已选内容

如果需要进一步优化操作手感,可以配合以下设置:

" 禁用Vim的默认选择方式
set mouse-=a
set selectmode=

" 设置Windows风格的选择逻辑
behave mswin
source $VIMRUNTIME/mswin.vim

这些设置可以让GVim的鼠标操作更接近常规编辑器体验。