आप इच्छित textwidth स्थापित करने के लिए CursorMoved
और CursorMovedI
autocommands उपयोग कर सकते हैं (या किसी अन्य सेटिंग) लाइन के आधार पर कर्सर वर्तमान पर है:, let &l:textwidth = line('.') == 1 ? 50 : 72
हालांकि नेस्टेड autocommands यह नहीं बल्कि फैशनेबल दिखने:
augroup gitsetup
autocmd!
" Only set these commands up for git commits
autocmd FileType gitcommit
\ autocmd CursorMoved,CursorMovedI *
\ let &l:textwidth = line('.') == 1 ? 50 : 72
augroup end
बुनियादी तर्क सरल है। आप इसे कुछ स्क्रिप्ट-स्थानीय फ़ंक्शन (fun! s:setup_git()
) पर निकाल सकते हैं और यदि आप चाहें तो उसे कॉल करें।
&:l
वाक्य रचना तरह से (लेकिन setlocal
साथ हम इस तरह के, केवल एक साधारण स्ट्रिंग दाएँ हाथ की ओर पर के रूप में एक अभिव्यक्ति का उपयोग नहीं कर सकते हैं) द्वारा, setlocal
के समान है।
कुछ संबंधित प्रश्न:
ध्यान दें कि डिफ़ॉल्ट gitcommit.vim
वाक्य रचना फ़ाइल पहले से ही 50 अक्षर के बाद पहली पंक्ति पर प्रकाश डाला बंद हो जाता है। /usr/share/vim/vim80/syntax/gitcommit.vim
से:
syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow [email protected]
[..]
hi def link gitcommitSummary Keyword
केवल पहले 50 लाइनों के बाद कि कोई हाइलाइटिंग लागू किया जाता है, "कीवर्ड" (प्रकाश मेरे रंग योजना में भूरे रंग का) के रूप में हाइलाइट हो जाते हैं।
तो भी है: यह
syn match gitcommitOverflow ".*" contained [email protected]
[..]
"hi def link gitcommitOverflow Error
सूचना कैसे बाहर टिप्पणी की है, शायद इसलिए कि यह थोड़ा भी स्वच्छंद है। आप आसानी से हालांकि अपने vimrc को यह जोड़ सकते हैं:
augroup gitsetup
autocmd!
" Only set these commands up for git commits
autocmd FileType gitcommit
\ hi def link gitcommitOverflow Error
\| autocmd CursorMoved,CursorMovedI *
\ let &l:textwidth = line('.') == 1 ? 50 : 72
augroup end
कौन सा सब कुछ के बाद 50 अक्षर (आप, अगर आप चाहते हैं, यह भी कम निकला हुआ रंग एक अलग आकर्षण समूह का चयन करके इस्तेमाल कर सकते हैं) एक त्रुटि के रूप में दिखाई देगा।
ग्रेट उत्तर, और मैंने पहले '& l: 'चाल नहीं देखा है, यह उपयोगी होगा! – nickspoon