How to format vim quick entry entry?

This is the vim script for creating the Markdown schema:

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() 

Example markdown file: https://github.com/progit/progit/raw/master/zh/01-introduction/01-chapter1.markdown


After running the command :TOC this is a quick list:

 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| »» 小结 »» 

I want to format quick fix entries:

 |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| »» 小结 »» 

I cannot find any way to do this. If you know, please tell me. Thanks!

+6
source share
2 answers

It is not possible to configure how the quick search locations are displayed. it only indicates how to interpret them using the errorformat option. However, you can use the hide function to hide file names in quickfix or the location list window.

The following commands allow you to hide and define a syntax rule that matches any text at the beginning of the line before the first character | .

 set conceallevel=2 concealcursor=nc syntax match qfFileName /^[^|]*/ transparent conceal 

You can call these commands for each window of a quick or local list using an automatic command. However, this is not a good idea in general, since in most cases displaying file names is a useful feature. So, in the case presented in the question, it is better to make these settings only for the newly compiled list of locations. To do this, you must first open the location list window, though.

 lopen set conceallevel=2 concealcursor=nc syntax match qfFileName /^[^|]*/ transparent conceal 
+8
source

I ended up implementing this on plasticboy / vim-markdown on this PR (with GIF animation) using set modifiable + instead of hiding something:

 function! b:Markdown_Toc() silent lvimgrep '^#' % vertical lopen let &winwidth=(&columns/2) set modifiable %s/\v^([^|]*\|){2,2} #// for i in range(1, line('$')) let l:line = getline(i) let l:header = matchstr(l:line, '^#*') let l:length = len(l:header) let l:line = substitute(l:line, '\v^#*[ ]*', '', '') let l:line = substitute(l:line, '\v[ ]*#*$', '', '') let l:line = repeat(' ', (2 * l:length)) . l:line call setline(i, l:line) endfor set nomodified set nomodifiable endfunction 

But you may prefer:

 Plugin 'plasticboy/vim-markdown' 

It is for you. =)

Screenshot:

enter image description here

+1
source

Source: https://habr.com/ru/post/919001/


All Articles