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

如何在未编译clipboard的服务器端Vim中配置OSC52复制?

为Vim配置OSC52实现远程复制

OSC52是终端支持的控制序列,无需Vim编译clipboard功能,只要你的终端(如iTerm2、Alacritty、Kitty等)支持,就能把远程Vim里的内容直接同步到本地剪贴板。

基础配置步骤

直接在你的自定义Vim配置文件(比如~/.vimrc)中添加以下代码:

" 实现OSC52复制的核心函数
function! OSC52Copy()
  " 获取默认寄存器中的内容
  let s:text = getreg('"')
  " 处理换行符,适配终端格式
  let s:text = substitute(s:text, '\n', '\r', 'g')
  " 生成符合OSC52标准的控制序列
  let s:osc52 = printf("\x1b]52;c;%s\x07", substitute(base64#encode(s:text), '\n', '', 'g'))
  " 发送序列到终端
  call chansend(v:stderr, s:osc52)
endfunction

" 映射快捷键:可视模式和普通模式下yank后自动触发复制
vnoremap <silent> y y:call OSC52Copy()<CR>
nnoremap <silent> y y:call OSC52Copy()<CR>

" 可选:自定义快捷键(比如Leader+y),避免覆盖默认y键
" vnoremap <silent> <Leader>y y:call OSC52Copy()<CR>
" nnoremap <silent> <Leader>y y:call OSC52Copy()<CR>

配置说明

  • 函数会读取Vim默认寄存器"的内容(即你刚复制的文本),转成OSC52要求的格式后发送给终端,终端会自动将其写入本地剪贴板。
  • 若不想修改默认的y键行为,推荐使用自定义快捷键(比如<Leader>y),只需注释掉默认映射,启用自定义映射即可。
  • 测试方法:在Vim中选中或复制一段文本,触发映射后,在本地终端粘贴验证是否成功。

进阶优化

如果需要复制成功的提示,可以在OSC52Copy函数末尾添加一行:

echo "Copied to local clipboard via OSC52"

对于Vim 8.1及以上版本,上述代码完全兼容,无需额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:04:59