मैं सफेद रिक्त स्थान अनुगामी दूर करने के लिए मेरी .vimrc में निम्नलिखित समारोह जोड़ा था के लिए सफेद स्थान अनुगामी सिर्फ बचतकेवल संपादित लाइनों
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
autocmd BufWritePre *.h :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.cpp :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.c :call <SID>StripTrailingWhitespaces()
यह वास्तव में अच्छी तरह से काम करता है से पहले निकाला जा रहा है। हालांकि, कुछ मामलों में मैं केवल उन पंक्तियों से पिछली सफेद रिक्त स्थान को हटाना चाहता हूं जिन्हें मैंने संपादित किया है। यह सुनिश्चित करना है कि मेरे diff
आउटपुट कुछ विरासत कोड फ़ाइलों के लिए सैने दिखता है, लगभग सभी लाइनें पीछे की जगहों का पीछा कर रही हैं और मैं अपने कोड समीक्षक को अनावश्यक diff के साथ बोझ नहीं करना चाहता।
diff -b
अभी कोई समाधान नहीं है क्योंकि यह लाइन में कहीं से भी सफेद रिक्त स्थान को अनदेखा करता है और कभी-कभी यह परिवर्तन diff
आउटपुट में शामिल होने के लिए पर्याप्त महत्वपूर्ण है।
तो मेरा सवाल यह है - क्या इस सत्र में केवल इस पंक्ति में संपादित की गई सफेद रेखाओं को पीछे हटाना संभव है? की StripTrailingWhitespaces()
समारोह
s/\s\+$//e
यह करने के लिए बदल गया है,
autocmd InsertLeave *.[ch] :call <SID>StripTrailingWhitespaces()
और स्थानापन्न आदेश बदलने के लिए:
मैं एक हाइलाइटिंग नियम यह है कि प्रकाश डाला गया है (एक बहुत कष्टप्रद रास्ते में) खाली स्थान के अनुगामी है, तो यह बहुत आसान है मुझे देखने के लिए के लिए क्या अंतरिक्ष हटा दिया जाना चाहिए; लेकिन +1 क्योंकि इसमें से अधिकांश को स्वचालित करना अच्छा लगेगा। – SingleNegationElimination
क्यों नहीं, एक बंद कार्य के रूप में, अपनी सभी विरासत फ़ाइलों से सभी पिछली सफेद जगहों को पट्टी क्यों करें? –
@ मैथ्यूस्ट्रॉब्रिज उस अस्पष्टता को करते हुए, जब आप गिट एनोटेट की तरह कुछ चलाते हैं तो लाइनें (या आखिरी बार बदलती हैं)। (यह अभी भी पाया जा सकता है, लेकिन इसमें अतिरिक्त कदम उठाए जाते हैं।) –