2017-05-12 11 views
5

पर गिट प्रतिबद्ध संदेश की विषय पंक्ति सीमा सीमित करें मैं अक्सर अपने गिट प्रतिबद्ध संदेशों को प्रारूपित करने के लिए vim का उपयोग करता हूं। एक प्रवृत्ति जिसे मैं increasingpopularity के साथ देख रहा हूं वह यह है कि प्रतिबद्ध संदेश की पहली पंक्ति 50 वर्ण तक सीमित होनी चाहिए और उसके बाद की पंक्तियों को 72 वर्णों तक सीमित होना चाहिए।50 गिट्स

I already know how to make my commit wrap at 72 characters based on my vimrc file: उसके बाद

syntax on 
au FileType gitcommit set tw=72 

वहाँ 50 अक्षर पर vim पहली पंक्ति autowrap बनाने के लिए एक रास्ता है और उसके बाद 72 वर्ण?

एक समान रूप से अच्छे जवाब संकेत मिलता है कि मेरी शीर्ष लेख बहुत लंबा है केवल पहली पंक्ति पर 50 वीं स्तंभ के बाद सब कुछ पर प्रकाश डाला सकता है ...

उत्तर

4

आप इच्छित 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 अक्षर (आप, अगर आप चाहते हैं, यह भी कम निकला हुआ रंग एक अलग आकर्षण समूह का चयन करके इस्तेमाल कर सकते हैं) एक त्रुटि के रूप में दिखाई देगा।

+0

ग्रेट उत्तर, और मैंने पहले '& l: 'चाल नहीं देखा है, यह उपयोगी होगा! – nickspoon

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