मुख्य विशेषताओं में से एक जो मुझे विम के बारे में याद आती है, वह यह है कि यह हमेशा %
बफर ( अधिक जानकारी ) में वर्तमान फ़ाइल का फ़ाइल नाम बचाता है । इससे कमांड को आसानी से लॉन्च किया जा सकता है:
;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...
मैं इसी तरह की कार्यक्षमता के तहत emacs
(संस्करण 24, अगर इससे कोई फर्क पड़ता है) करना चाहता हूं , तो वर्तमान बफर में खोली गई फ़ाइल का नाम सम्मिलित करने का एक आसान तरीका है।
मैं क्या करना चाहता हूं इसके उदाहरण
यहां मैं कुछ बुनियादी उपयोग के मामलों का वर्णन करता हूं, ताकि जब मैं इस तरह के शॉर्टकट की आवश्यकता महसूस करूं तो बेहतर समझा जा सके
संकलन: जब मैं
M-x compile
ईमेक में प्रवेश करता हूं तो मुझसे एक कंपाइल कमांड के लिए पूछता है। मैंgcc (current-buffer)
आसानी से प्रवेश करना चाहूंगा ।लोड-फ़ाइल: जब मैं अपनी .emacs फ़ाइल को संपादित कर रहा हूं, तो मैं परिवर्तनों का परीक्षण करने के लिए इसे तुरंत लोड करना चाहूंगा। जिस तरह से मैं यह कर रहा हूं
M-x load-file
और फिर मैं हमेशा नाम का जादू करता हूं . e m a c s। मैं एक शॉर्टकट रखना चाहूंगा।बाहर की प्रक्रियाओं को लॉन्च करें: मैंने
du -sh
एक उदाहरण के रूप में दिया , केवल यह स्पष्ट करने के लिए कि मैं चाहता हूं कि शॉर्टकट तब भी उपलब्ध हो जब मैं शेल कमांड निष्पादित करता हूंM-!
मैंने अब तक क्या पाया
- यह प्रश्न यहां U & L पर है। दिए गए उत्तर मूल रूप से दिखा रहे हैं कि बफर का फ़ाइल नाम कहां खोजना है ताकि कोई इसे किल-रिंग में जोड़ सके। यह बिल्कुल वैसा नहीं है जैसा मैं देख रहा हूं, मैं इसका उपयोग करने से पहले फ़ाइलनाम को मैन्युअल रूप से मारना नहीं चाहता। (इसके अलावा दोनों उत्तर में वर्णित समाधान मेरे एमएसीएस में आसानी से काम नहीं करते हैं और अतिरिक्त कीस्ट्रोक्स की आवश्यकता होती है जिससे उन्हें थोड़ा दर्द होता है)।
संपादित करें : थोड़ा असंबंधित, मुझे पता चला कि ये समाधान काम क्यों नहीं करते हैं। मेरे पास आईडीओ सक्षम है, बेहतर या बदतर के लिए।
(current-buffer)
समारोह के मैनुअल में वर्णित वर्तमान बफर में फ़ाइल का नाम वापसी करता है, लेकिन कहीं नहीं उदाहरण में मैं ऊपर दे दी है, मैं elisp कोड का मूल्यांकन कर रहा हूँ। क्या इस फ़ंक्शन के मूल्यांकन के परिणाम को एक (मिनी) बफर में डालने और एक शॉर्टकट को इस तरह से बाँधने का कोई तरीका है?
क्या मैं इस तरह से सोचना गलत हूँ?
मैं वर्तमान में विम का उपयोग करने के वर्षों के बाद emacs (यह वास्तव में कुछ महीने रहा है) का उपयोग करना सीख रहा हूं। मैं एक भविष्य कहनेवाला-इमैक-इन-ए-विम-वे ट्रैप से बचना चाहता हूं । यदि आपको लगता है कि जो मैं पूछ रहा हूं वह बहुत emacs- y नहीं है , और इसे करने के लिए एक बेहतर (क्लीनर?) तरीका होना चाहिए, तो कृपया अपने उत्तरों में इसका उल्लेख करें।
(buffer-file-name)
मिनीबफ़र में टाइप करते समय दौड़ते हैं, तो आपको मिलता है nil
, क्योंकि (current-buffer)
मिनीबफ़र है। मिनीबफ़र में भी आप बफ़र्स स्विच कर सकते हैं, इसलिए, यह मुश्किल है कि किस बफ़र पर नज़र रखें, जिसे आप वर्तमान बफ़र के बजाए वर्तमान बफ़र के बारे में सोचते हैं, जैसा कि Emacs देखता है, वह मिनीबफ़र है।
(global-set-key (kbd "C-i") buffer-file-name)
यदि आप इसे Ctrl + I होना चाहते हैं तो डाल दें। .Emacs के बारे में,M-x load-file RET
जो आप चाहते हैं; आपको कुछ भी लिखने की आवश्यकता नहीं है।