如何在Vim中复制ALE悬浮提示信息到剪贴板?
复制ALE悬浮提示到Vim寄存器/剪贴板的方法
有几种实用的方法可以实现这个需求,不用依赖常规的redir命令:
方法一:用ALE官方API直接提取(推荐)
ALE提供了专门的函数可以直接获取光标位置的悬浮提示内容,不需要触发悬浮窗口就能拿到数据。
- 要把提示内容存入Vim默认寄存器(
""),执行:let @"" = join(ale#hover#GetHoverData().contents, "\n") - 要直接存入系统剪贴板寄存器(
"*,对应大多数系统的Ctrl+C/V剪贴板),执行:let @* = join(ale#hover#GetHoverData().contents, "\n")
原理很简单:ale#hover#GetHoverData()会返回一个字典,里面的contents字段是提示文本的列表,用join把列表拼接成带换行的字符串,再赋值给指定寄存器就行。
方法二:自定义快捷键一键复制
如果经常需要复制提示,可以在你的vimrc里加个快捷键映射,比如用<leader>ac(你可以改成自己习惯的组合):
nnoremap <leader>ac :let @* = join(ale#hover#GetHoverData().contents, "\n")<CR>
之后光标放在有ALE提示的代码行上,按<leader>ac就能直接把提示复制到剪贴板。
方法三:适配旧版ALE的临时窗口法
如果你的ALE版本比较旧,没有ale#hover#GetHoverData()这个API,可以用临时窗口提取:
- 先按默认的
K键触发悬浮提示 - 执行
:call ale#hover#Open(),把悬浮提示转换成普通的Vim窗口 - 选中窗口里的所有文本(可以用
ggVG),然后用"*y复制到剪贴板,或者执行:yank *命令 - 最后用
:q关闭这个临时窗口
注意事项
- 确保ALE版本足够新,
ale#hover#GetHoverData()是较新版本才引入的API,如果用不了就试试方法三 - 如果复制出来是空内容,检查光标是否真的在有ALE警告/错误提示的代码行上
内容的提问来源于stack exchange,提问作者rkshthrmsh
相关产品推荐
相关产品推荐

