যেহেতু আমি কৌতূহলী ছিলাম এটি কতটা ভাল কাজ করবে, তাই আমি এই ধরণের কাজগুলি একসাথে হ্যাক করেছি।
পূর্বের উত্তরের মন্তব্যে যেমন উল্লেখ করা হয়েছে, এটি করার একমাত্র উপায় হ'ল অঞ্চলগুলি শূন্যস্থান পূরণ করা; যা আমরা ঠিক তাই করি; লেখার আগে, আমরা এই স্পেসগুলি সরিয়ে ফেলি, সুতরাং আপনার এটির সাথে অন্য কাউকে বিরক্ত করা উচিত নয়।
নোট করুন যে এই উদাহরণটি মার্কডাউন ফাইল টাইপের জন্য খুব নির্দিষ্ট!
পার্শ্ব প্রতিক্রিয়া :
- পাঠ্য অনুলিপি করাও অনেকগুলি স্থান কপি করবে
- ব্যবহার করা $এবং 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
আপনি অবশ্যই রঙগুলি আপনার পছন্দ অনুযায়ী সামঞ্জস্য করতে পারেন ;-)
তারপরে, এটি আপনার ভিআমআরসি-তে যুক্ত করুন:
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()
আমি কোড লাইন বাই লাইন ব্যাখ্যা করতে যাচ্ছি না, মন্তব্যগুলি এর সাধারণ বক্তব্যটি পরিষ্কার করে দেওয়া উচিত ;-)