2010-12-11 16 views
10
M-x flush-lines ^$ 

एक बफर में सभी रिक्त रेखाएं हटा देता है। हालांकि मैं केवल अतिरिक्त रिक्त रेखाएं हटाना चाहता हूं, यह है कि अगर लगातार खाली रेखाएं हैं तो मैं एन -1 को हटाना चाहता हूं और एक रखना चाहता हूं।emacs में अतिरिक्त रिक्त रेखाएं हटाएं

मुझे पता है कि हटाए गए रिक्त रेखाएं बिंदु के नीचे खाली रेखाओं के लिए नौकरी करती हैं, हालांकि मैं एक साधारण समाधान चाहता हूं जो पूरे बफर के लिए काम करता है।

कोई भी विचार है कि यह कैसे करना है? विशेष रूप से अतिरिक्त लाइनों से मेल खाने के लिए मेरे पहले उदाहरण से regex^$ को संशोधित करना संभव है?

उत्तर

18
C-x h M-x replace-regexp RET^C-q C-j C-q C-j + RET C-q C-j RET 

जो पूरे बफर के निशान और दो की जगह या एक खाली रेखा के साथ और अधिक खाली लाइनें।

+0

इसी प्रकार, आप कर सकते हैं: 'एम-एक्स प्रतिस्थापन-regexp आरईटी^सी-क्यू सी-जे $ आरईटी आरईटी'। यह लगातार दो रिक्त रेखाओं को एक के साथ बदल देगा। –

4

मैं इस के लिए समारोह में बनाया गया एक के बारे में पता नहीं है, लेकिन आप कर सकते हैं:

एमएक्स एकल लाइनों-केवल

(defun single-lines-only() 
    "replace multiple blank lines with a single one" 
    (interactive) 
    (goto-char (point-min)) 
    (while (re-search-forward "\\(^\\s-*$\\)\n" nil t) 
    (replace-match "\n") 
    (forward-char 1))) 
5

सी-एक्स सी-ओ (हटाएं-खाली-रेखाएं) बिल्कुल ठीक है। पूरे बफर पर चलाने के लिए आपको बस थोड़ा मैक्रो जादू चाहिए।

+1

यह 'सी-एक्स सी-ओ ',' सी-एक्स ओ 'कॉल' अन्य विंडो 'माना जाता है। – monotux

+0

सच, प्रतिक्रिया टाइप करने के लिए जल्दी में था। धन्यवाद। – eGlyph

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