2011-08-02 10 views
22

मैं इंडेंट और पूरे क्षेत्र एन रिक्त स्थान दाएं या बाएं ओर करना चाहता हूं। मैं इसे सी-सी> और सी-सी < के साथ कुछ तरीकों से कर सकता हूं, लेकिन मैं इसे सामान्य रूप से करना चाहता हूं।मैं emacs में एन रिक्त स्थान कैसे इंडेंट कर सकता हूं?

यदि मुझे यह कुशल बनाने के लिए मेरे .emacs को बदलने की आवश्यकता है (ऊपर की तरह एक कीबोर्ड शॉर्टकट के साथ) यह ठीक है।

+6

पास वोटों के साथ क्या है चयन कैसे करें? इमैक के लिए हाउ-डू-आई-डू-फू प्रश्न उम्र के लिए SO पर रहे हैं, और कुछ लोगों को चारों ओर सबकुछ बदलने की ज़रूरत नहीं है। –

+1

बीन [बार-बार मेटा पर चर्चा की गई] [http://meta.stackoverflow.com/search?q=emacs), भी (हालांकि छोटे निष्कर्षों के साथ)। सबसे अच्छा सबसे अच्छा है [क्या हम कृपया एसओ पर Emacs प्रश्नों के बारे में फैसला कर सकते हैं?] (Http://meta.stackexchange.com/q/79659/2509) जहां प्रमुख उत्तर निष्कर्ष निकाला है कि वे स्टैक ओवरफ़्लो पर हैं। – dmckee

+2

हाँ, यह थोड़ा निराशाजनक है, लेकिन मुझे संदेह है कि हम इसके बारे में कोई नीति देखने जा रहे हैं। मैंने जो सिफारिश देखी वह यह थी कि, क्योंकि वहां कोई स्पष्ट एकल साइट नहीं है, जहां वे सभी संबंधित हैं (और Emacs- विशिष्ट एसई साइट का विचार स्पष्ट रूप से खारिज कर दिया गया था), उन्हें आम तौर पर छोड़ा जाना चाहिए जहां मूल उपयोगकर्ता उन्हें डालता है। – phils

उत्तर

9

मुझे लगता है कि कोड की शांति निम्नलिखित आप मदद कर सकते हैं:

;; Shift the selected region right if distance is positive, left if 
;; negative 

(defun shift-region (distance) 
    (let ((mark (mark))) 
    (save-excursion 
     (indent-rigidly (region-beginning) (region-end) distance) 
     (push-mark mark t t) 
     ;; Tell the command loop not to deactivate the mark 
     ;; for transient mark mode 
     (setq deactivate-mark nil)))) 

(defun shift-right() 
    (interactive) 
    (shift-region 1)) 

(defun shift-left() 
    (interactive) 
    (shift-region -1)) 

;; Bind (shift-right) and (shift-left) function to your favorite keys. I use 
;; the following so that Ctrl-Shift-Right Arrow moves selected text one 
;; column to the right, Ctrl-Shift-Left Arrow moves selected text one 
;; column to the left: 

(global-set-key [C-S-right] 'shift-right) 
(global-set-key [C-S-left] 'shift-left) 

आप (shift-region 1) और आप चाहते हैं मूल्य द्वारा (shift-region 1) बदल सकते हैं।

संपादित करें: आप देख सकते हैं के रूप में, मेरी समारोह लपेटता मांगपत्र-सख्ती से:

मांगपत्र-सख्ती में `indent.el एक इंटरैक्टिव संकलित लिस्प समारोह है '।

यह सी-एक्स टैब के लिए बाध्य है।

(मांगपत्र-सख्ती से अंत ARG स्टार्ट)

इंडेंट ARG स्तंभों के आधार पर बग़ल में क्षेत्र में शुरू होने वाले सभी लाइनों। किसी प्रोग्राम से कॉल किया गया, तीन तर्क, स्टार्ट, ईएनडी और एआरजी लेता है। आप एक बड़े नकारात्मक एआरजी देकर एक क्षेत्र से सभी इंडेंटेशन को हटा सकते हैं।

8

rectangle commands भी उपयोगी हैं जो पाठ की बजाय टेक्स्ट के आयतों पर काम करते हैं।

उदाहरण के लिए, एक आयताकार क्षेत्र अंकन के बाद,

C-x r o आवेषण रिक्त स्थान आयताकार क्षेत्र को भरने के लिए C-x r k आयताकार क्षेत्र को मारता है (प्रभावी रूप से सही करने के लिए कोड स्थानांतरण) (प्रभावी रूप से बाईं ओर कोड स्थानांतरण)

12

सैंड्रो के उत्तर का मुख्य हिस्सा indent-rigidly पर कॉल है।

C-x TAB (translated from C-x <tab>) runs the command indent-rigidly, 
which is an interactive compiled Lisp function in `indent.el'. 

It is bound to C-x TAB. 

(indent-rigidly start end arg) 

Indent all lines starting in the region sideways by arg columns. 
Called from a program, takes three arguments, start, end and arg. 
You can remove all indentation from a region by giving a large negative arg. 

तो, मार्क क्षेत्र, आंकिक आर्ग, प्रेस C-x TAB दर्ज करें।

26

मेरे लिए क्या काम करता है: का चयन करें क्षेत्र और उसके बाद C-u <number of spaces> C-x TAB

अद्यतन

@Eric हम एक समारोह को परिभाषित करने और शॉर्टकट एक कुंजीपटल करने के लिए बाध्य कर सकता है, जैसे कि 10। इसे अपने emacs कॉन्फ़िगरेशन में जोड़ने का प्रयास करें।

(defun insert-tabs (n) 
    "Inserts N number of tabs" 
    (interactive "nNumber of tabs: ") 
    (dotimes (i n) 
    (indent-for-tab-command))) 

(global-set-key [?\C-x \C-tab] 'insert-tabs) 
+0

यह बहुत अच्छा काम करता है, लेकिन मुझे यह याद नहीं है। कोई संकेत? (इस पृष्ठ को बुकमार्क करने के अलावा।) –

+0

@ एरिक विल्सन हाय एरिक, मैंने एक और सुझाव के साथ जवाब अपडेट किया। – armandino

+0

अच्छा काम, लेकिन जो मैं वास्तव में पसंद करूंगा वह आदेशों को निष्पादित करने के लिए एक सिमेंटिक सुराग होगा। क्या सी-यू का मतलब कुछ ही है? –

0

cua-mode का उपयोग करें।

M-x cua-mode सक्रिय करने के लिए, C-RET पूरे क्षेत्र का पहला स्तंभ, और प्रकार अंतरिक्ष, अंत में, esc तीन बार से बचने के लिए, किया ~

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