-
Notifications
You must be signed in to change notification settings - Fork 117
Open
Description
现在使用quickfix的输出内容总是会在左侧有两个竖线ll。在复制错误信息的时候不太友好。建议使用 ’quickfixtextfunc‘ 整理输出的内容。
10. 定制快速修复窗口 *quickfix-window-function*
快速修复窗口和位置列表窗口显示行的缺省格式是:
<filename>|<lnum> col <col>|<text>
每行显示的值对应于 |getqflist()| 函数返回的 "bufnr"、"lnum"、"col" 和 "text"
字段。
对有些快速修复/位置列表而言,显示的文本需要定制。例如,如果快速修复项目只有文
件名,文件名后的两个 "|" 字段分隔符是多余的。另一个用例是定制文件名显示的路径
部分。缺省,不在当前目录树下的文件会显示其完整路径 (可能过长)。文件路径可能需
要简化为公共的父目录。
可通过设置 'quickfixtextfunc' 选项为一个 Vim 函数来定制显示的文本。此函数调用
时会带一个字典参数,并应返回字符串的列表,它们会在快速修复或位置列表窗口中显
示。此字典参数会包含以下字段:
quickfix 为快速修复列表调用时设为 1,为位置列表调用时设为 0。
winid 对位置列表而言,设为位置列表所在的窗口 id。快速修复列表则设为
0。可通过 getloclist() 调用以获取位置列表项目。
id 快速修复或位置列表标识符
start_idx 应返回文本的首个项目
end_idx 应返回文本的末个项目
对应从 start_dx 到 end_idx 的每个项目,此函数应返回在快速修复窗口显示的的单行
文本。此函数可通过指定快速修复列表标识符 "id" 调用 |getqflist()| 函数来获取项
目的相关信息。对位置列表而言,可用带 "winid" 参数的 getloclist() 函数。如果该
函数返回空列表,使用缺省格式来显示所有项目。如果返回列表中的某项目为空串,使用
缺省格式来显示其对应项目。
如果需要特定于某快速修复或位置列表的定制,可用 |setqflist()| 或 |setloclist()|
函数来设定该列表中的 'quickfixtextfunc' 属性来覆盖全局的 'quickfixtextfunc' 选
项。
下例在快速修复窗口中显示旧文件列表 (|v:oldfiles|)。因为没有和每个项目相关联的
行号、列号和错误文本信息,'quickfixtextfunc' 函数只返回文件名。
示例: >
" 从 v:oldfiles 来建立快速修复列表
call setqflist([], ' ', {'lines' : v:oldfiles, 'efm' : '%f',
\ 'quickfixtextfunc' : 'QfOldFiles'})
func QfOldFiles(info)
" 获取一段快速修复项目范围的相关信息
let items = getqflist({'id' : a:info.id, 'items' : 1}).items
let l = []
for idx in range(a:info.start_idx - 1, a:info.end_idx - 1)
" 使用简化的文件名
call add(l, fnamemodify(bufname(items[idx].bufnr), ':p:.'))
endfor
return l
endfunc
<Metadata
Metadata
Assignees
Labels
No labels