Emacs में बेहतर टैब




elisp indentation (4)

मैं ईएमएसीएस में खराब डिफॉल्ट टैबबींग योजना को ओवरराइड करना चाहता हूं ताकि यह अधिकांश अन्य संपादकों (ग्रहण, नोटपैड ++) की तरह काम करे। मैं इसे सेट करना चाहता हूं ताकि मोड की परवाह किए बिना टैब टैब को सम्मिलित कर लेगा, और प्रवेश को दबाकर मुझे अपने वर्तमान टैब गहराई पर रखेगा I

मैंने यह कोशिश की, लेकिन यह कुछ भी नहीं है:

(global-set-key (kbd "TAB") 'tab-to-tab-stop)
(setq default-tab-width 4) ;; 8 is way too many

एन्टर कुंजी को अगली पंक्ति पर ले जाने और स्वचालित रूप से इंडेंट करने के लिए, आप रख सकते हैं

(global-set-key (kbd "RET") 'newline-and-indent)

आपके .emacs [या आप एंटर के बजाय Cj को हिट कर सकते हैं।] एक बार आपके पास यह तब होता है, आपको कभी भी टैब्स को मैन्युअल रूप से सम्मिलित करने की आवश्यकता नहीं होगी, क्योंकि इमैक स्वचालित रूप से एक उद्घाटन ब्रेस के बाद अतिरिक्त गहराई में एक नई लाइन को इन्डेंट कर देता है। यदि आप बदलना चाहते हैं इंडेंटेन्टेशन, आप टैब को तब तक दबा सकते हैं जब तक कि आपको सही इंडेंटेशन पर नहीं ले जाता है, फिर वहां से टाइप करना शुरू करें [और जब आप एक समापन ब्रेस लिखते हैं, तो इमाक्स काफी चतुर है कि वह ब्र्रेस एक इंडेंटेशन लेवल पीछे की ओर ले जाता है।]

इसके लिए आपको काम करने के लिए (global-set-key (kbd "TAB") 'tab-to-tab-stop) को हटाना चाहिए।


कई प्रमुख मोड TAB बंधन को ओवरराइड करते हैं, उदाहरण के लिए सीसी-मोड TAB को 'c-indent-to-column से जोड़ता है।

'global-set-key जो सुझाव दिया गया है, कुछ नहीं करता क्योंकि लगभग हर प्रमुख मोड ने TAB को ओवरराइड कर दिया है

एक चाल जो आपके लिए काम करे, वह 'pabbrev का उपयोग करने वाले दृष्टिकोण की प्रतिलिपि बनाना है, और उस वैश्विक नाबालिग मोड को परिभाषित करना है जिसमें 'pabbrev आप ऐसा कर सकते हैं:

(defvar just-tab-keymap (make-sparse-keymap) "Keymap for just-tab-mode")
(define-minor-mode just-tab-mode
  "Just want the TAB key to be a TAB"
  :global t :lighter " TAB" :init-value 0 :keymap just-tab-keymap
  (define-key just-tab-keymap (kbd "TAB") 'indent-for-tab-command))

हालांकि, यह सभी TAB पूर्णता को अक्षम करता है। आपको प्रत्येक एक-एक करके एक-एक के ऊपर ओवरराइड करके सबसे अच्छा परिणाम मिलेगा (ताकि TAB पूरा होने से बचने के लिए)।


मुझे लगता है कि जैकसन का जवाब शायद संभव है कि आप क्या चाहते हैं, इसके अलावा संभवतः 'indent-for-tab-command बजाय 'self-insert-command उपयोग करें। मैं निजी तौर पर emacs का डिफ़ॉल्ट व्यवहार पसंद करता हूं, लेकिन self-insert-command ऐसा करता है जो कुछ भी फैंसी करने की कोशिश करने की बजाय यह सुनिश्चित करता है कि आपका कोड अच्छी तरह से स्वरूपित है

कुछ समय मैं वास्तव में एक टैब (इंडेंट नहीं) को सम्मिलित करना चाहता हूं I


आपको http://github.com/vohrta/regtab पर निर्मित इस मामूली मोड में रुचि हो सकती है I

यह ऐसा बना देता है कि जब आप टैब कुंजी को एक टैब वर्ण (यदि इंडेंट-टैब्स-मॉड शून्य नहीं है) या टैब-चौड़ाई रिक्त स्थान को बिंदु पर रखा जाएगा मोड, आप जो चयनित पाठ के क्षेत्र में नियमित रूप से व्यवहार करते हैं और लाइन की शुरुआत में टैब (या पंक्तियों के सेट) को हटाने के लिए बदलाव-टैबबिंग को नियंत्रित करने में भी सक्षम है।

आप किसी भी समय Mx regtab-mode दबाकर इसे सक्षम या अक्षम कर सकते हैं।





indentation