मुझे यह पता लगाने के लिए एक सरल (या जटिल) तरीका चाहिए कि उपयोगकर्ता किस मोड में है। मुझे यह जानने की ज़रूरत है कि उपयोगकर्ता सामान्य, सम्मिलित, दृश्य, प्रतिस्थापन, बदलें इत्यादि में है।विम: स्टेटसलाइन के लिए उपयोगकर्ता किस मोड में है, इसका पता लगाने के लिए कैसे?
मुझे पता है mode()
फ़ंक्शन, हालांकि मैं यह नहीं समझ सकता कि इसे केवल एक वर्ण की बजाय पूर्ण स्ट्रिंग आउटपुट कैसे बनाया जाए।
मेरी योजना एक ऐसा फ़ंक्शन बनाना था जो mode()
रिटर्न के आधार पर स्थिति रेखा की पृष्ठभूमि और अग्रभूमि रंगों को गतिशील रूप से बदल देगा। मूल रूप से आईएफएस और अन्य चीजों के समूह के साथ एक समारोह जो मेरे लिए यह करेगा। हालांकि इस दृष्टिकोण के साथ एक दोष है, मैं नहीं जानता कि इसके लिए डिफ़ॉल्ट रूप से थीम सेटअप कौन सा रंग है।
तो बुनियादी तौर पर, मैं कैसे एक समारोह है जो निम्न करता है बनाने के लिए कुछ सुझाव दिए गए/मदद की ज़रूरत है:।
- जानता है जो मोड उपयोगकर्ता में है कार्यों के बाकी अलग ढंग से हर बार प्रतिक्रिया यह परिवर्तनशील है।
fg
औरbg
मानों के साथ कुछ चर सेट करता है जो दर्शाता है कि वर्तमान थीम उनके लिए क्या सेट है।- इन मानों के आधार पर स्थिति रेखा के अग्रभूमि और पृष्ठभूमि को बदलता है।
मैंने इसे करने की कोशिश की, लेकिन यह करने का यह एक बहुत ही कठिन तरीका था और यह बिल्कुल काम नहीं करता था। यह केवल रंगों को एक बार सेट करता है और उसके बाद यह हर बार बदलता प्रतिक्रिया नहीं देता है।
आपकी मदद के लिए धन्यवाद! :)
संपादित करें:
सुंदर यकीन है कि मैं क्या करने की कोशिश की पहले कि काम नहीं कर रहा था ऐसा किया:
let &stl.='%{StatuslineModeColor()}'
संपादित करें:
function! StatuslineModeColor()
let s:StatuslineMode=mode()
if s:StatuslineMode == 'n'
hi Statusline ctermbg=blue guibg=blue
elseif s:StatuslineMode == 'i'
hi Statusline ctermbg=red guibg=red
endif
endfunc
और statusline में मैं निम्नलिखित डाल 2:
मुझे पता चला है कि मूल रूप से मुझे जो करना है वह है जो भी रंग पकड़ने का तरीका ढूंढता है विषय पहले इस्तेमाल कर रहा था। अगर मैं इस समाधान का उपयोग करता हूं: http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5
हालांकि यह समाधान मेरे मानकों में आदर्श नहीं है, क्योंकि यह साफ नहीं है, या जितना साफ हो सकता है क्योंकि यह बहुत अधिक अव्यवस्था पैदा करता है। :/
@romainl हो गया, इसे जोड़ने के लिए भूल गए। :) यह सटीक फ़ंक्शन नहीं है जिसका मैंने पहले उपयोग किया था, लेकिन यह बहुत करीब है। – greduan
@romainl मुझे लगता है कि इसका एक अच्छा Reddit संस्करण मिला है: http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5 इसके साथ केवल समस्या यह है कि यह मानों को नहीं लेता है थीम स्वयं, ऐसा करने का एक अच्छा तरीका क्या हो सकता है? – greduan
1. पूर्ण स्ट्रिंग आउटपुट के लिए आपको 'मोड() 'की आवश्यकता क्या है? 2. आपके फ़ंक्शन में स्क्रिप्ट-स्थानीय चर क्या कर रहे हैं? यह स्थानीय होना चाहिए ('एल:' या 's:' के स्थान पर कुछ भी नहीं होना चाहिए। – ZyX