2011-06-24 16 views
6

जैसा व्यवहार करता है मैं वर्तमान में Emacs सीख रहा हूं और मैं अपनी प्रारंभिक फ़ाइल सेट अप करने का प्रयास कर रहा हूं। वर्तमान में ऐसा लगता है कि यह (यह वेब में कहीं पाया जाता है):Emacs टैब बनाना vim के

(setq indent-tabs-mode t) 
(setq-default indent-tabs-mode t) 
(global-set-key (kbd "TAB") 'self-insert-command) 
(setq default-tab-width 4) 
(setq tab-width 4) 
(setq c-basic-indent 4) 

लेकिन यह टैब के विम की शैली की तरह व्यवहार नहीं करता है।

मैं बस टैब का उपयोग करते समय इसे विम की तरह व्यवहार करना चाहता हूं। इसका मतलब है रिक्त स्थान वाले टैब को प्रतिस्थापित नहीं करना (मुझे लगता है कि Emacs डिफ़ॉल्ट रूप से ऐसा करता है)।

ताकि प्रत्येक व्यक्ति अपनी पसंदीदा टैब चौड़ाई में फ़ाइलों को संपादित कर सके। मैं आमतौर पर टैब चौड़ाई के लिए 4 का उपयोग करता हूं। और जब मैं बैकस्पेस दबाता हूं तो यह उसी नंबर पर वापस जायेगा जिसका अर्थ है कि यदि मैंने टैब को 4 पर सेट किया है और मैं टैब दबाता हूं तो बैकस्पेस दबाए जाने के बाद यह 4 वर्णों से वापस जायेगा। यह हमेशा टैब के लिए 4 रिक्त स्थान का उपयोग करना चाहिए। क्योंकि कभी-कभी emacs में यह ऐसा नहीं करता है।

+0

Emacs में इंडेंटेशन कुछ जटिल विषय है, लेकिन मुझे लगता है कि कुछ विवरणों को समझने में कुछ समय व्यर्थ है। बहुत सारी जानकारी के लिए http://www.emacswiki.org/emacs/CategoryIndentation देखें। – phils

उत्तर

6

विम का टैब हैंडलिंग कॉन्फ़िगर किया जा सकता है, इसलिए आप जो करना चाहते हैं उसका एक अच्छा विवरण नहीं है, लेकिन आपके शेष विवरण में अधिकांश भाग के लिए पर्याप्त जानकारी है।

टैब से निपटने का सबसे आसान तरीका कभी भी उनका उपयोग नहीं करना है। इसलिए आश्चर्यचकित न हों अगर आप उन्हें पसंद करते हुए टैब सेट अप करते हैं तो थोड़ा सा काम लगता है।

आपने टैब वर्ण डालने के लिए टैब कुंजी सेट अप की है। यह Emacs में कस्टम नहीं है: आमतौर पर टैब कुंजी वर्तमान लाइन को इंडेंट करने के लिए उपयोग की जाती है। आपने जो किया है वह डिफ़ॉल्ट के लिए पर्याप्त है, लेकिन भाषा-विशिष्ट मोड अभी भी टैब इंडेंट बना सकते हैं। मैं c-basic-indent को शामिल करने से मानता हूं कि आप सी कोड पर काम कर रहे हैं; तो आपको सी मोड को बताने की जरूरत है कि आप टैब इंडेंट में नहीं चाहते हैं। यह यह करना चाहिए:

(eval-after-load "cc-mode" 
    '(define-key c-mode-map (kbd "TAB") 'self-insert-command)) 

एक और बात आप आई है कि डिफ़ॉल्ट रूप से, बैकस्पेस कुंजी की कोशिश करता वापस एक स्तंभ से नहीं बल्कि एक चरित्र की तुलना में स्थानांतरित करने के लिए है। निम्नलिखित को इसे एक वर्ण को हटाना चाहिए:

(global-set-key (kbd "DEL") 'backward-delete-char) 
(setq c-backspace-function 'backward-delete-char) 
+0

मैं विम डिफ़ॉल्ट सेटअप का उपयोग करता हूं सिवाय इसके कि मैं 4 के टैबस्टॉप का उपयोग करता हूं। अब यह बहुत अच्छा काम करता है। – rob

+0

अर्धविराम emacs सेट करने के बाद बाईं ओर रेखा को दो अक्षर से बदल देता है। क्या आप जानते हैं कि इसे कैसे बंद करें? मेरी init फ़ाइल वर्तमान में इस तरह दिखती है (setq indent-tabs-mode t) (वैश्विक-सेट-कुंजी (kbd "DEL") 'पिछड़ा-हटा-चार) (setq c-backspace-function' पिछड़ा-हटा-चार) (सेटक-डिफॉल्ट इंडेंट-टैब-मोड टी) (ग्लोबल-सेट-की (केबीआई "टैब") 'सेल्फ-डालने-कमांड) (सेटक डिफ़ॉल्ट-टैब-चौड़ाई 4) (सेटक टैब-चौड़ाई 4) (सेटक सी-मूल-इंडेंट 4) (सेटक बैकअप-अवरोधित टी) (eval-after-load "सीसी-मोड" '(परिभाषित कुंजी सी-मोड-मैप (केबीआई "टैब") स्वयं -insert-command)) (हटाएं-चयन-मोड टी) (सेटक ऑटो-सेव-डिफॉल्ट शून्य) – rob

+0

@rob यदि आप नहीं चाहते हैं कि Emacs स्वचालित रूप से पुन: प्रारंभ करें जब आप ';' दबाएं (और कुछ अन्य वर्ण एस), उन्हें 'सी-मोड-मैप' में '(eval-after-load "सीसी-मोड" (परिभाषित कुंजी सी-मोड-मैप ";" शून्य) के साथ अनबिंड करें) '।यदि आपकी शिकायत यह है कि Emacs आपके इच्छित कॉलम की संख्या में शामिल नहीं है, तो उसे बताएं कि आपकी पसंदीदा इंडेंटेशन शैली क्या है; देखें [सी मोड मैनुअल] (http://cc-mode.sourceforge.net/html-manual/Customizing-Indentation.html# अनुकूलन- इंडेंटेशन)। – Gilles

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