2012-01-21 7 views
7

emacs में, मैं क्षेत्र चुनने पर सी-के को मारने के क्षेत्र में बांधना चाहता हूं; अन्य सामान्य के रूप में हत्या। इसे कैसे कॉन्फ़िगर करें?क्षेत्र चयनित होने पर सी-के को मारने के क्षेत्र को कैसे बांधें; अन्यथा मार-लाइन

उत्तर

12

अपने .emacs

(defun kill-line-or-region() 
"kill region if active only or kill line normally" 
    (interactive) 
    (if (region-active-p) 
     (call-interactively 'kill-region) 
    (call-interactively 'kill-line))) 

    (global-set-key (kbd "C-k") 'kill-line-or-region) 
+0

यदि आप पहली बार फ़ाइल खोलते हैं और चिह्न कभी सेट नहीं होता है तो यह काम नहीं करता है। – asmeurer

+0

ठीक है, समाधान केवल '(इंटरैक्टिव "आर")' का उपयोग नहीं करना है, लेकिन केवल '(इंटरैक्टिव) '। मैं आपका जवाब संपादित करूंगा। – asmeurer

5

यह सलाह के लिए एक नौकरी की तरह लगता है इस रखें!

(defadvice kill-line (around kill-region-if-active activate) 
    (if (and (called-interactively-p) (region-active-p)) 
     (kill-region (region-beginning) (region-end)) 
    ad-do-it)) 

संपादित करें: called-interactively-p चेक जोड़ा गया।

+0

हम्म .. मुझे तुम्हारा पसंद है। :/ – kindahero

+3

वू! इसे पकड़ो! 'मार-लाइन' एक ऐसा काम है जो आंतरिक रूप से पैकेज का उपयोग करता है, यह वास्तव में सूक्ष्म तरीके से व्यवहार करता है, यह कैसे बदलता है। मैं अपना पैसा @ किन्दरहेरो समाधान पर डालूंगा, क्योंकि यह वही दुष्प्रभावों के बिना आप जो भी करेंगे, वह करेगा। – Lindydancer

+0

ठीक है, तो अगर ऊपर जोड़ा गया है, तो मैं इंटरैक्टिवता के लिए एक चेक कैसे जोड़ूं? – Sean

0

यह वास्तव में प्रत्यक्ष उत्तर नहीं बल्कि कुछ संकेत हैं।

आप (delete-selection-mode 1) के साथ सक्षम कर सकते हैं। फिर यदि कोई क्षेत्र चिह्नित किया गया है, तो जब आप कुछ टेक्स्ट टाइप करना शुरू करेंगे तो क्षेत्र हटा दिया जाएगा। लेकिन आपके मामले में आप वर्तमान क्षेत्र को काटने के लिए सी-डब्ल्यू का उपयोग कर सकते हैं, यह क्षेत्र को मारने वाली अंगूठी में जोड़ देगा लेकिन kill-line भी ऐसा करेगा।

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