क्योंकि मैं उत्सुक था कि यह कितना अच्छा काम करेगा, मैंने एक साथ कुछ हैक किया है जो काम करता है।
जैसा कि पहले उत्तर में टिप्पणियों में उल्लेख किया गया है, ऐसा करने का एकमात्र तरीका रिक्त स्थान वाले क्षेत्रों को भरना है; हम जैसा करते हैं वैसा ही है; लिखने से पहले, हम इन रिक्त स्थान को हटा देते हैं, इसलिए आपको इसके साथ किसी और को परेशान नहीं करना चाहिए।
ध्यान दें कि यह उदाहरण मार्कडाउन फिलाटाइप के लिए बहुत विशिष्ट है!
दुष्प्रभाव :
- पाठ को कॉपी करना बहुत सारे रिक्त स्थान की प्रतिलिपि भी बनाएगा
- उपयोग करना $और Endअपेक्षा के अनुरूप काम नहीं करना (यह कॉलम 80 तक जाता है), और कुंजी जैसे कि
jऔर kअलग व्यवहार भी करते हैं।
'list'
सक्षम होने पर पृष्ठभूमि प्रदर्शित नहीं होती है
- पूरी तरह से खाली लाइनें काम नहीं करती हैं, आपको मैन्युअल रूप से एक टैब या 4 रिक्त स्थान जोड़ने की आवश्यकता है
- ... शायद अधिक?
सबसे पहले, आपको इसे अपने साथ जोड़ना होगा ~/.vim/after/syntax/markdown.vim
:
syn clear markdownCodeBlock
syn region markdownCodeBlock start=" \|\t" end="$"
hi def markdownCodeBlock ctermbg=230 guibg=lightyellow
आप अपनी पसंद के अनुसार रंगों को समायोजित कर सकते हैं;
फिर, इसे अपने vimrc में जोड़ें:
fun! MarkdownBlocks()
fun! s:fill(line)
" Remove all trailing whitespace
let l:line = substitute(a:line, " *$", "", "")
" Add trailing whitespace up to 'textwidth' length
return l:line . repeat(' ', (&tw > 0 ? &tw : 80) - strdisplaywidth(l:line))
endfun
" Get all lines in a list
let l:lines = getline(1, line('$'))
" Map s:fill() to the lines that are a code block
call map(l:lines, 'v:val[0] == "\t" || v:val[:3] == " " ? s:fill(v:val) : v:val')
" Reset the buffer to the lines
call setline(1, l:lines)
endfun
" Remove all the trailing spaces
fun! MarkdownBlocksClean()
let l:save_cursor = getpos(".")
silent %s/^\( \|\t\)\(.\{-}\)\( *\)$/\1\2/e
call setpos('.', l:save_cursor)
endfun
au BufWritePre *.markdown call MarkdownBlocksClean()
" Set spaces on loading the file, leaving insert mode, and after writing it
au FileType markdown call MarkdownBlocks()
au InsertLeave *.markdown call MarkdownBlocks()
au BufWritePost *.markdown call MarkdownBlocks()
मैं कोड लाइन-बाय-लाइन की व्याख्या नहीं करने जा रहा हूं, टिप्पणियों को इसे स्पष्ट करना चाहिए;;