2012-06-26 12 views
6

यह vim स्क्रिप्ट Markdown रूपरेखा उत्पन्न करने के लिए है:vim quickfix प्रविष्टि को कैसे प्रारूपित करें?

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

एक नमूना markdown फ़ाइल:

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| »» 小结 »» 
: https://github.com/progit/progit/raw/master/zh/01-introduction/01-chapter1.markdown


:TOC आदेश चलाने के बाद, इस त्वरित सूची है


मैं इस के लिए त्वरित सुधार प्रविष्टियों स्वरूपित करना चाहते हैं:

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

मैं यह करने के लिए किसी भी विकल्प नहीं मिल रहा। यदि आप जानते हैं, तो कृपया मुझे बताएं। धन्यवाद!

+0

Btw, अपने (अच्छा और उपयोगी) कार्यान्वयन पर ध्यान नहीं देता बहुत पहले शीर्षक नहीं। (उदाहरण में, '# 起步 #' गायब है।) आपको पहले 'खोज()' के लिए 'सी' ध्वज शामिल करने की आवश्यकता है: ... कर्सर कॉल करें (1, 1) खोज करते समय झंडे = 'सीडब्ल्यू' दें ("^ #", झंडे)> 0 झंडे = 'डब्ल्यू' ... –

उत्तर

8

यह कॉन्फ़िगर करना संभव नहीं है कि Quickfix स्थानों को कैसे प्रदर्शित किया जाए। यह केवल errorformat विकल्प के साथ उन्हें समझने के लिए निर्दिष्ट करना संभव है। हालांकि, कोई भी क्विकफ़िक्स या स्थान सूची विंडो में फ़ाइल नामों को छिपाने के लिए छुपा सुविधा का उपयोग कर सकता है।

निम्न आदेश पहले | वर्ण से पहले किसी लाइन की शुरुआत में टेक्स्ट से मेल खाने वाले सिंटैक्स नियम को छिपाने और परिभाषित करने में सक्षम करते हैं।

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

एक हर QuickFix या स्थान सूची खिड़की एक स्वत: आदेश का उपयोग करने के लिए इन आदेशों को गति प्रदान कर सकते हैं। फिर भी, यह सामान्य रूप से एक अच्छा विचार नहीं है, क्योंकि अधिकांश फ़ाइल नाम प्रदर्शित करने वाले मामले उपयोगी सुविधा हैं। इसलिए, मामले में प्रश्न में प्रस्तुत किया गया है, तो इन अनुकूलन को केवल नए एकत्रित स्थान सूची के लिए बनाना बेहतर है। इसके लिए पहले स्थान सूची विंडो खोलने की आवश्यकता है, हालांकि।

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

'NonText' समूह का नाम नामांकित हाइलाइटिंग समूह के लिए एक लिंक सुझाता है। एक बेहतर, अधिक सुसंगत नाम 'qfFile' हो सकता है। –

+0

@Ingo: शायद, लेकिन कस्टम हाइलाइटिंग समूह नाम का उपयोग करके अतिरिक्त कमांड की आवश्यकता होती है। इसके अलावा, यह कस्टम समूह प्रभावी रूप से एक डमी होगा।'पारदर्शी' और 'छुपाएं' विनिर्देशकों के कारण हाइलाइटिंग समूह का उपयोग नहीं किया जाता है, और अनुकूलित करने के लिए कोई हाइलाइटिंग नहीं है। –

+0

आप सही हैं, लेकिन मुझे समझ में नहीं आता कि आपको एक और कमांड की आवश्यकता क्यों होगी। चूंकि हाइलाइटिंग समूह का उपयोग यहां नहीं किया जाता है, इसलिए आपको इसे परिभाषित करने की आवश्यकता नहीं है। –

1

मैं साथ कुछ के साथ set modifiable + बजाय छुपाने के प्रतिस्थापन का उपयोग कर this PR (with GIF animation) पर plasticboy/vim-markdown पर इस को लागू करने समाप्त हो गया:

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 

लेकिन आप पसंद कर सकते हैं:

Plugin 'plasticboy/vim-markdown' 

यह आप पर निर्भर है । =)

स्क्रीनशॉट:

enter image description here

संबंधित मुद्दे