如何格式化vim quickfix条目?

kev*_*kev 7 vim

这是生成Markdown大纲的vim脚本:

fun! TOC()
    call setloclist(0, [])
    let save_cursor = getpos(".")
    call cursor(1, 1)
    while search("^#", 'W') > 0
       let msg = printf('%s:%d:%s', expand('%'), line('.'), substitute(getline('.'), '#', '»', 'g'))
       laddexpr msg
    endwhile
    call setpos('.', save_cursor)
endfun

com! -bar TOC call TOC()
Run Code Online (Sandbox Code Playgroud)

示例降价文件:https://github.com/progit/progit/raw/master/zh/01-introduction/01-chapter1.markdown


运行:TOC命令后,这是快速列表:

01-chapter1.markdown|5| »» ?????? »»
01-chapter1.markdown|11| »»» ???????? »»»
01-chapter1.markdown|22| »»» ?????????? »»»
01-chapter1.markdown|33| »»» ????????? »»»
01-chapter1.markdown|42| »» Git ?? »»
01-chapter1.markdown|56| »» Git ?? »»
01-chapter1.markdown|60| »»» ????????????? »»»
01-chapter1.markdown|74| »»» ???????????? »»»
01-chapter1.markdown|82| »»» ????????? »»»
01-chapter1.markdown|92| »»» ????????? »»»
01-chapter1.markdown|98| »»» ??????? »»»
01-chapter1.markdown|121| »» ?? Git »»
01-chapter1.markdown|125| »»» ?????? »»»
01-chapter1.markdown|152| »»» ? Linux ??? »»»
01-chapter1.markdown|162| »»» ? Mac ??? »»»
01-chapter1.markdown|177| »»» ? Windows ??? »»»
01-chapter1.markdown|185| »» ???? Git ???? »»
01-chapter1.markdown|197| »»» ???? »»»
01-chapter1.markdown|206| »»» ????? »»»
01-chapter1.markdown|212| »»» ?????? »»»
01-chapter1.markdown|220| »»» ?????? »»»
01-chapter1.markdown|240| »» ???? »»
01-chapter1.markdown|254| »» ?? »»
Run Code Online (Sandbox Code Playgroud)

我想将快速修复条目格式化为:

|005| »» ?????? »»
|011| »»» ???????? »»»
|022| »»» ?????????? »»»
|033| »»» ????????? »»»
|042| »» Git ?? »»
|056| »» Git ?? »»
|060| »»» ????????????? »»»
|074| »»» ???????????? »»»
|082| »»» ????????? »»»
|092| »»» ????????? »»»
|098| »»» ??????? »»»
|121| »» ?? Git »»
|125| »»» ?????? »»»
|152| »»» ? Linux ??? »»»
|162| »»» ? Mac ??? »»»
|177| »»» ? Windows ??? »»»
|185| »» ???? Git ???? »»
|197| »»» ???? »»»
|206| »»» ????? »»»
|212| »»» ?????? »»»
|220| »»» ?????? »»»
|240| »» ???? »»
|254| »» ?? »»
Run Code Online (Sandbox Code Playgroud)

我找不到任何选择.如果你知道,请告诉我.谢谢!

ib.*_*ib. 9

无法配置quickfix位置的显示方式.只能指定如何使用该errorformat选项解释它们.但是,可以使用隐藏功能隐藏quickfix或位置列表窗口中的文件名.

以下命令可以隐藏和定义与第一个|字符前一行开头的任何文本匹配的语法规则.

set conceallevel=2 concealcursor=nc
syntax match qfFileName /^[^|]*/ transparent conceal
Run Code Online (Sandbox Code Playgroud)

可以使用自动命令为每个quickfix或位置列表窗口触发这些命令.然而,一般来说这不是一个好主意,因为在大多数情况下,显示文件名是一个有用的功能.因此,在问题中提供的情况下,最好仅针对新收集的位置列表进行这些自定义.但它需要首先打开位置列表窗口.

lopen
set conceallevel=2 concealcursor=nc
syntax match qfFileName /^[^|]*/ transparent conceal
Run Code Online (Sandbox Code Playgroud)