Emacs में और ज़्यादा batteries अब डिफ़ॉल्ट रूप से शामिल
(karthinks.com)- Emacs की डिफ़ॉल्ट सुविधाओं में ऐसे कई टूल हैं जिन्हें बिना अलग पैकेज के इस्तेमाल किया जा सकता है, लेकिन वे ज़्यादा सामने नहीं आते; और आधुनिक Emacs 28.1+ में भी 5 मिनट में सीखने लायक उपयोगी फीचर लगातार मिलते रहते हैं
- फ़ाइल खोलना, URL इकट्ठा करना, तुलना करना, और बदलाव ट्रैक करना जैसे रोज़मर्रा के काम
find-file,dired,ffap-menu,compare-windows,highlight-changes-modeसे ही काफ़ी हद तक किए जा सकते हैं - बैकअप फ़ाइलों और version control फ़ाइलों के लिए
vc-diffपरिवार के commands को बढ़ाकर पिछले संस्करण से तुलना जैसे एक ही कार्य मॉडल में जोड़ा जा सकता है - संपादन, नेविगेशन और डिस्प्ले से जुड़े काम
aproposपरिवार,find-function-on-key,kmacro-edit-lossage,subword-mode, और image manipulation keymap जैसी पहले से शामिल सुविधाओं से तेज़ी से बेहतर किए जा सकते हैं - मुख्य takeaway यह है कि Emacs की
lispdirectory बहुत बड़ी न होने पर भी बिल्ट-इन सुविधाओं के सहारे workflow को और फैलाने की गुंजाइश लगातार बनी रहती है
अवलोकन और दायरा
- Emacs सुविधाओं में discoverability की समस्या है, और यह लेख कम-ज्ञात लेकिन उपयोगी बिल्ट-इन सुविधाओं को एक-एक करके दिखाकर उस समस्या को कम करने की कोशिश है
- यह लेख Emacs में डिफ़ॉल्ट रूप से शामिल उपयोगी लेकिन कम-ज्ञात सुविधाओं पर आधारित तीसरा लेख है
- “कम-ज्ञात” एक व्यक्तिपरक आकलन है; मोटे तौर पर इसका मतलब वे सुविधाएँ हैं जिनका पिछले 20 वर्षों की ऑनलाइन Emacs चर्चाओं में पाँच बार से कम ज़िक्र देखा गया हो, या बिल्कुल न देखा गया हो
- नए Emacs उपयोगकर्ताओं के लिए यहाँ से शुरू करना बेहतर नहीं है; बुनियादी अवधारणाओं और व्यापक रूप से सुझाए जाने वाले पैकेजों से परिचित होने के बाद यह सूची ज़्यादा उपयोगी होगी
- मानदंड यह है कि बिना पैकेज के शुद्ध Emacs ही इस्तेमाल हो, सीखने की ढलान बहुत कठिन न हो, मज़ाकिया सुविधाएँ और अक्सर बताई जाने वाली सुविधाएँ बाहर रखी जाएँ, और आधुनिक Emacs 28.1+ को आधार माना जाए
माउसओवर शब्दकोश: M-x dictionary-tooltip-mode
dictionary-tooltip-modeचालू करने पर किसी शब्द पर माउस ले जाने से उसका अर्थ tooltip में देखा जा सकता हैtooltip-modeभी चालू होना चाहिए, लेकिन यह डिफ़ॉल्ट रूप से सक्रिय रहता है- अगर local dictionary सेट है तो उसे पहले इस्तेमाल किया जाता है, और Emacs dictionary आमतौर पर Wiktionary के ज़रिए आधुनिक शब्द और slang भी ढूँढ सकती है
find-file और dired में wildcard
find-fileऔरdiredको interactive तरीके से इस्तेमाल करते समय भी wildcard का उपयोग किया जा सकता हैfind-fileमें*foo*.txtजैसा pattern इस्तेमाल करने पर कई फ़ाइलें एक साथ खोली जा सकती हैं- Dired में directory खोलते समय filename wildcard देने पर केवल चुनी हुई फ़ाइलों की custom list बनाई जा सकती है
- उदाहरण workflow में
*/*_region_*pattern से subdirectory के AucTeX temporary files ढूँढे जाते हैं, फिर Dired में उन्हें चुनकर हटाया जाता है, और उसके बाद wildcard से subdirectory की कई TeX फ़ाइलें खोली जाती हैं - यह सुविधा function signature के हिसाब से programming call में दिखती है, लेकिन interactive उपयोग में भी उपलब्ध है—यह बात पूरी docstring पढ़ने पर ही आसानी से समझ आती है
- Dired की wildcard सुविधा
consult-findऔरembark-exportसे बने आधुनिक Dired workflow के सामने दब सकती है, लेकिन यह डिफ़ॉल्ट स्थिति में तुरंत काम करती है
buffer के अंदर URI सूची: M-x ffap-menu
ffapएक find-file-at-point सुविधा है जो देखती है कि cursor की जगह कोई वैध file path या URL है या नहीं, और फिर उसे खोलने देती हैffap-menuपूरे buffer को स्कैन करके file path या URL जैसे दिखने वाले आइटमों की सूची देता है- क्योंकि यह
completing-readinterface का उपयोग करता है, इसलिए filtered candidate list को buffer में export किया जा सकता है, या कुछ/सभी आइटम कॉपी, खोल, या Embark के साथ प्रोसेस किए जा सकते हैं -
properties वाले links की सूची बनाना
- EWW जैसे Emacs applications कभी-कभी URL को सामान्य text link की जगह text property के रूप में रखते हैं, और
ffap-menuइन्हें छोड़ देता है - इसे पूरा करने के लिए
ffap-menuसे प्रेरित किसी custom command मेंshr-urltext property भी इकट्ठा की जा सकती है - उदाहरण command
my/search-occur-browse-urlसामान्य URL regex औरshr-urlproperty दोनों को ढूँढकर completion candidates बनाता है, और चुने गए URL कोbrowse-urlयाbrowse-url-genericसे खोलने के लिए सेट किया जा सकता है
- EWW जैसे Emacs applications कभी-कभी URL को सामान्य text link की जगह text property के रूप में रखते हैं, और
विंडो तुलना: M-x compare-windows
- Emacs में
diff,diff-buffers,diff-backup,dired-diff,vc-diff, और कईediff-*commands जैसे बहुत से comparison commands मौजूद हैं compare-windowsदो विंडो की cursor position से टेक्स्ट की तुलना शुरू करता है, अगली असमानता पर रुकता है, और उसकी रिपोर्ट देता है- तुलना के लिए active window और
other-windowद्वारा चुनी गई window इस्तेमाल होती है; इसमें Ediff या diff की तुलना में कम फीचर हैं, लेकिन इसे चलाना ज़्यादा आसान और तेज़ है - यह buffer के प्रकार, संशोधन स्थिति, फ़ाइल, या version control स्थिति से परे, केवल दोनों विंडो में दिख रहे वास्तविक टेक्स्ट की तुलना करता है
- अगर एक ही buffer के अलग-अलग हिस्से दो विंडो में दिखाए जाएँ, तो उसी buffer के दो text fragments की भी तुलना की जा सकती है
- directory listings की भी तुलना की जा सकती है, और उदाहरण में file modification time पहली असमानता के रूप में पकड़ा जाता है
- prefix argument देने पर whitespace के फ़र्क को नज़रअंदाज़ किया जा सकता है
Dired से directory तुलना: M-x dired-compare-directories
dired-compare-directoriesDired में तुलना के लिए directory पूछता है, और दो Dired सूचियों में अलग नाम वाली फ़ाइलों को चिह्नित करता है- यह तरीका directory comparison के सबसे आम उपयोग मामलों को संभाल सकता है
- क्योंकि यह file-level comparison है, इसलिए file properties जैसे modification time या size सहित custom matching conditions दिए जा सकते हैं
(> mtime2 mtime1)शर्त हाल में बदली गई फ़ाइलों को चिह्नित कर सकती है(/= size1 size2)शर्त समान नाम लेकिन अलग size वाली फ़ाइलों को चिह्नित कर सकती है- अगर अधिक interactive comparison चाहिए, तो
ediff-directoriesभी इस्तेमाल किया जा सकता है
buffer बदलाव हाइलाइट: M-x highlight-changes-mode
highlight-changes-modeफ़ाइल में बदलाव वाले हिस्सों को हाइलाइट करने की सुविधा है, और इसेdiff-buffer-with-fileजैसे diff commands के “live” विकल्प के रूप में इस्तेमाल किया जा सकता है- इसका डिफ़ॉल्ट व्यवहार mode चालू होने से लेकर बंद होने तक के बदलावों को हाइलाइट करना है; यह अपने-आप केवल unsaved changes को ही हाइलाइट नहीं करता
before-save-hookऔरafter-save-hookका उपयोग करके, save से पहले highlighting बंद कर और save के बाद फिर चालू कर, ऐसा workflow बनाया जा सकता है जो केवल save से पहले के बदलावों को हाइलाइट करे- उदाहरण code
text-mode-hookमें file buffer के लिएhighlight-changes-modeचालू करता है, और save से पहले/बाद के hooks से highlighting की स्थिति नियंत्रित करता है - इसे अलग
highlight-unsaved-modeके रूप में बनाया जाए तो यह एक minor mode बन जाता है जो save होने तक सभी बदलावों को हाइलाइट करता है highlight-changes-next-changeऔरhighlight-changes-previous-changeसे अगले/पिछले बदलाव वाले स्थान पर जाया जा सकता हैhighlight-changes-remove-highlightसे दृश्य हाइलाइट हटाकर केवल change-tracking आधारित navigation का उपयोग किया जा सकता है
बैकअप फ़ाइलों को वास्तव में उपयोगी बनाना: vc-diff परिवार
-
Emacs बैकअप की समस्या
- Emacs डिफ़ॉल्ट रूप से उन फ़ाइलों के बैकअप समय-समय पर बनाता है जिन्हें आप संपादित और सेव करते हैं
- इस बैकअप सिस्टम का ज़िक्र अक्सर ऐसी परेशान करने वाली सुविधा के रूप में होता है जिसे
make-backup-filesसे बंद कर देना चाहिए - संवेदनशील फ़ाइलों के डिस्क पर किसी दूसरी जगह कॉपी हो जाने को लेकर सुरक्षा संबंधी चिंता हो सकती है
- इसके अलावा, समस्या मुख्यतः यह है कि बैकअप working directory में बिखर जाते हैं, और बैकअप फ़ाइलों को देखना या संभालना आसान बनाने वाला UI कमज़ोर है
backup-directory-alist,kept-old-versions,kept-new-versionsजैसे user options से बैकअप का स्थान और रखी जाने वाली कॉपियों की संख्या समायोजित की जा सकती है- बाहरी पैकेज
backup-walkerबैकअप को time travel की तरह ब्राउज़ करने का इंटरफ़ेस देता है
-
VC इंटरफ़ेस का विस्तार
- Emacs का built-in VC पैकेज version-controlled फ़ाइलों के पुराने versions देखने का इंटरफ़ेस देता है
vc-diffफ़ाइल का diff पिछले version या किसी निर्दिष्ट version से करता हैvc-ediffफ़ाइल के पिछले version या किसी निर्दिष्ट version के साथ Ediff चलाता हैvc-revision-other-windowपिछले या निर्दिष्ट पुराने version को मौजूदा फ़ाइल के बगल में दिखाता है- यह इंटरफ़ेस सिर्फ Git तक सीमित नहीं है, लेकिन version control में न होने वाली फ़ाइलों पर काम नहीं करता
- इन तीन VC commands को overload करने पर unsaved buffers, version-controlled फ़ाइलें, और version control में न होने वाली फ़ाइलों के बैकअप—सबको “पिछले version से तुलना” के एक ही मॉडल में जोड़ा जा सकता है
- unsaved फ़ाइलों में
vc-diffऔरvc-ediffbuffer और फ़ाइल की तुलना करते हैं - version-controlled फ़ाइलों में मूल
vc-diff,vc-ediff,vc-revision-other-windowवैसे ही चलते हैं - version control में न होने वाली फ़ाइलों में सबसे नए numbered backup, या prefix argument से चुने गए numbered backup, से तुलना या प्रदर्शन किया जाता है
apropos परिवार
describe-keyयानीC-h kएक बहुत उपयोगी help key है, क्योंकि इससे सीधे देखा जा सकता है कि कोई key input किस function को कॉल करता है- दूसरी help feature के रूप में
aproposबहुत ताकतवर है, और जब यह न पता हो कि क्या खोजना है, तब यह Emacs की सुविधाओं की बनावट समझने का प्रवेशद्वार बनता है aproposसिर्फ एक command नहीं, बल्किapropos-library,apropos-function,apropos-command,apropos-variable,apropos-user-option,apropos-documentation,info-aproposजैसे कई specialized search commands का परिवार है- उदाहरण configuration इन commands को
C-h aके नीचे एक keymap में बाँधकरaproposको replace करती है which-keyजैसे prompter के बिना भीC-h aprefix key के बादC-hदबाकर उपलब्ध commands की सूची देखी जा सकती हैcustomize-aproposखोज शब्द से मेल खाने वाले options, faces, और groups को इकट्ठा कर एक customized customize buffer बनाता है
find-func टूल्स: M-x find-function-on-key, M-x find-function
- जब कोई keybinding पसंद न आए या उसका behavior समझना हो, तो उस key द्वारा कॉल किए गए command की definition पर जाकर उसके काम को पढ़ा या बदला जा सकता है
- सामान्य flow यह है कि पहले
describe-keyयाC-h kसे यह देखा जाए कि key कौन-सा command चलाती है, फिरsदबाकर source पर जाया जाए find-function-on-keyइस दूसरे step को घटाकर keybinding से सीधे function source पर ले जाता है- उदाहरण configuration
help-mapमेंC-h M-kकोfind-function-on-keyसे bind करती है
copy-from-above-command और duplicate-dwim
- हाल में Emacs में कई users द्वारा बहुत पहले से इस्तेमाल किए जा रहे text duplication commands जोड़े गए हैं
copy-from-above-commandमौजूदा लाइन के ऊपर की पहली non-empty लाइन से text कॉपी करता है, और यह Vim केC-yजैसा हैduplicate-dwimमौजूदा लाइन या active region को वर्तमान लाइन के नीचे कॉपी करता है, और यह Vim केyy<N>pजैसा हैcopy-from-above-commandprefix argument के अनुसार ऊपर की लाइन से characters कॉपी करता है, लेकिन उदाहरण adviceC-uprefix argument को “ऊपर की पूरी लाइन कॉपी करो और उसे comment कर दो” वाले behavior में बदल देती है- numeric prefix argument
C-<N>का उपयोग करने पर पहले की तरह ऊपर से निर्धारित संख्या में characters कॉपी किए जा सकते हैं duplicate-dwimमें duplication के बाद cursor को original पर रखना है या duplicate पर, यह चुनना पड़ता है, और इसे user option से तय किया जा सकता है- उदाहरण configuration
duplicate-region-final-positionऔरduplicate-line-final-positionको-1पर सेट करती है ताकि cursor और region duplicated text पर चले जाएँ
key input history को macro बनाना: M-x kmacro-edit-lossage
- Emacs keyboard macros सिर्फ text transformation ही नहीं, बल्कि mouse clicks सहित Emacs की हर action sequence को capture और replay कर सकती हैं
- keyboard macros शक्तिशाली हैं, लेकिन recording शुरू करने से पहले दोहराव की संभावना का अनुमान लगाना पड़ता है, और गलती-रहित generalized action करनी होती है, इसलिए cognitive load बढ़ता है
- Vim का
.command और Emacs काdot-modeपैकेज editing repetition की समस्या को कुछ कम करते हैं, लेकिन उनका दायरा full keyboard macros से अलग है view-lossage(C-h l) हाल की लगभग 300 key inputs की history दिखाता हैkmacro-edit-lossageइस key input history से कभी भी macro बनाने देता है- lossage वास्तव में editable होता है, इसलिए macro बनाते समय रिकॉर्ड में नए commands भी डाले जा सकते हैं
- पहले से परिभाषित macro को
edit-kbd-macro(C-x C-k e) से अधिक नियमित रूप से संपादित किया जा सकता है, लेकिनkmacro-edit-lossageउन दुर्लभ स्थितियों में उपयोगी है जहाँ अभी-अभी किए गए जटिल काम को repeatable बनाना हो - generalized macro बनाने के लिए अक्सर
kbd-macro-querycall को lossage में डालना पड़ता है
subword-mode, superword-mode, शब्द grammar
- Emacs के word-based movement और editing commands major mode के हिसाब से syntax table का उपयोग करते हैं, और किसे एक शब्द माना जाए यह user समायोजित कर सकता है
subword-modeमें CamelCase symbols के हर component को अलग शब्द माना जाता है- उदाहरण के लिए
GtkWindowकोGtkऔरWindow,EmacsFrameClassकोEmacs,Frame,Class, औरNSGraphicsContextकोNS,Graphics,Contextमें बाँटा जाता है superword-modeमेंthis_is_a_symbolजैसे snake_case symbols को एक ही शब्द माना जाता है- व्यावहारिक उपयोग में symbols को संभालने के लिए
*-sexpcommands पहले से अच्छी तरह समर्थित हैं, इसलिएsuperword-mode,subword-modeकी तुलना में कम उपयोगी है - major mode की syntax table में बस कुछ मिनट का बदलाव भी structural movement में होने वाली असुविधा को कम कर सकता है
- Lisp जैसे संदर्भों में
:को word constituent character बना देने से:fooजैसे keywords कोbackward-kill-wordसे संभालना आसान हो जाता है - Org mode में
=और~delimiters को word constituent characters की तरह माना जा सकता है - character syntax निर्दिष्ट करने का तरीका
describe-syntax(C-h s) औरmodify-syntax-entryमें देखा जा सकता है
image display को manipulate करना
- Emacs जहाँ भी image दिखाता है, लगभग हर जगह image पर cursor रखकर
iदबाने से display को manipulate किया जा सकता है - Org mode के image link previews और Elfeed item buffers की images में भी यही controls इस्तेमाल किए जा सकते हैं
i +औरi -zoom in/out के लिए उपयोगी हैं, औरi rimage को 90 डिग्री घुमाता हैi cसे image crop भी की जा सकती है, और विस्तृत keysM-x describe-keymap RET image-mapमें देखी जा सकती हैं- browser और दूसरे applications में परिचित
C-<wheel>shortcut भी इस्तेमाल किया जा सकता है repeat-modeका उपयोग करने पर पहली call के बादiprefix के बिना सिर्फ+,-,rदोहराए जा सकते हैं- यह सुविधा image पर रखे गए keymap के रूप में मिलती है, और अलग से enable करने की ज़रूरत नहीं होती
- इसमें बदला जाने वाला हिस्सा डिस्क पर मौजूद image file नहीं, सिर्फ display state होता है
- web pages और rendered HTML buffers में
z(shr-zoom-image) image को कई क्षैतिज पट्टियों में बाँटकर उसका आकार चक्रित करता है, जिससे बड़ी images के display limits कुछ कम हो जाते हैं
सारा टेक्स्ट दिखाएँ: M-x visible-mode
- Emacs बफ़र टेक्स्ट को चुनिंदा रूप से अदृश्य बना सकता है, और यही फीचर Magit section, Outline mode, Org mode जैसी folding behavior की बुनियाद है
- folding फीचर देने वाले modes आम तौर पर fold state बदलने के लिए keybinding देते हैं, और
TABअक्सर काम करता है - अगर mode-specific keybindings याद रखना मुश्किल हो या आप उन्हें पर्याप्त बार इस्तेमाल न करते हों, तो
visible-modeसे सारा छिपा हुआ टेक्स्ट देखा जा सकता है visible-modeपूरे बफ़र में text invisibility को बंद कर देता है, और दोबारा चलाने पर पहले की invisibility state बहाल कर देता है- dynamic folding UI वाले बफ़र में
visible-modeचालू रहने के दौरान स्क्रीन टूटी-फूटी दिख सकती है - यह फीचर अस्थायी उपाय या debugging tool के ज़्यादा करीब है, लेकिन एक कमांड से बफ़र का सारा टेक्स्ट एक समान तरीके से दिखा सकता है
अदृश्य टेक्स्ट को नज़रअंदाज़ करें: isearch-toggle-invisible
- Isearch जैसे कुछ Emacs commands डिफ़ॉल्ट रूप से text invisibility को नज़रअंदाज़ करते हैं, ताकि पूरे असली दस्तावेज़ में आसानी से खोजा जा सके
- जब दिख रहा बफ़र state navigation guide की तरह काम कर रहा हो, तब fold किए गए टेक्स्ट को अपने-आप खोल देने वाली search उम्मीद के उलट व्यवहार कर सकती है
- जब Isearch को search से ज़्यादा navigation tool की तरह इस्तेमाल किया जाता है, तब folded region के match पर जाना समस्या बन सकता है
- Isearch के दौरान
M-s iपर boundisearch-toggle-invisibleसे अदृश्य टेक्स्ट में search करनी है या नहीं, यह बदला जा सकता है - उदाहरण में Org document की आख़िरी heading पर जाने के लिए
zeroखोजा गया, लेकिन search folded region के match पर कूद गई; फिर दोबारा search करते हुएM-s iदबाकर केवल दिख रहे टेक्स्ट के matches पर जाया गया - Isearch behavior बदलने वाली keys,
C-sकी default binding से मेल खाने वालेM-skeymap के नीचे होती हैं
रूलर: M-x ruler-mode
- Emacs में पुराने WYSIWYG word processing फीचर्स की विरासत के रूप में
center-*commands जैसी चीज़ें अब भी मौजूद हैं center-*commands line, paragraph, और region कोfill-columnके आधार पर बीच में align करते हैं, और code के decorative comments जैसे कामों में इस्तेमाल हो सकते हैं- display margin और fringe की चौड़ाई स्क्रीन स्पेस है जिसमें कई फीचर्स समा सकते हैं, लेकिन display margin की चौड़ाई सीधे बदलना आसान नहीं है
set-left-marginऔरset-right-margin, display margin की चौड़ाई बदलने वाले commands नहीं हैं; ये असली बफ़र टेक्स्ट को indent करने वालेcenterपरिवार के commands की तरह काम करते हैं- display margin settings के लिए कोई सीधा command नहीं है, और एक समस्या यह है कि window के दोबारा display होने तक असर लागू नहीं होता
ruler-modeचालू करने पर header-line के ऊपर tooltip में इसका इस्तेमाल देखा जा सकता हैS-<mouse-1>औरS-<mouse-3>से बफ़र के बाएँ और दाएँ margin सेट किए जा सकते हैं<mouse-2>drag करकेfill-columnभी सेट किया जा सकता है- अगर preset width toggle करने के बजाय तुरंत margin बदलना हो, तो
visual-fill-columnयाolivettiजैसे packages की तुलना मेंruler-modeज़्यादा user-friendly हो सकता है
टेक्स्ट को फिर से fill करें: M-x refill-mode
- Emacs टेक्स्ट fill करने के लिए कई
fill-*commands और typing के दौरान line break संभालने के लिएauto-fill-modeदेता है auto-fill-modeको Emacs tutorial में काफ़ी शुरुआती चरण में कवर किया जाता है, जिससे पता चलता है कि text filling को एक महत्वपूर्ण editing फीचर माना जाता हैauto-fill-modeवास्तव में पूरी तरह automatic नहीं है; यह सिर्फ़ मौजूदा line को wrap करता है, और paste वगैरह से बिगड़े पुराने paragraph alignment को हाथ से ठीक करना पड़ता हैrefill-modeEmacs का असली automatic text filling फीचर है, जो document कोfill-columnके अनुसार बनाए रखता हैM-x refill-modeचलाने पर यह behavior इस्तेमाल किया जा सकता है
सभी windows को साथ में scroll करें: M-x scroll-all-mode
scroll-other-windowबिना focus बदले किसी दूसरी, unselected window को scroll करने देता है, और यह तब उपयोगी है जब आप मौजूदा window में काम करते हुए अगली window के reference material को देखना चाहते होंfollow-modeएक buffer को कई windows में लगातार देखने का फीचर हैscroll-all-modeकम जाना-पहचाना है, लेकिन यह frame की सभी windows को एक साथ scroll करता है- यह उन buffers को देखने में उपयोगी है जिन्हें sync में देखकर तुलना करनी हो; उदाहरण में इसका इस्तेमाल Ediff session में जाए बिना किसी फ़ाइल के दो versions को आँखों से compare करने के लिए किया गया है
- उदाहरण का flow यह है: मौजूदा फ़ाइल का कोई खास पुराना backup
vc-revision-other-windowसे खोलें,scroll-all-modeचालू करें, फिर सामान्य तरह से scroll करें और सभी windows साथ चलें -
दूसरी window को scroll करना और
master-mode- अगर स्क्रीन पर दो से ज़्यादा windows हों और जिस window को scroll करना हो वह Emacs द्वारा चुनी गई
next-windowन हो, तो समस्या हो सकती है - built-in
master-modeपहले से या तुरंत यह तय करने देता है कि किस buffer को दूसरी window से scroll किया जा सके - इससे भी ज़्यादा सीधा तरीका है scroll की जाने वाली window खोजने की strategy सेट करना
(setq other-window-scroll-default #'get-lru-window)हमेशा सबसे लंबे समय से इस्तेमाल न हुई window को scroll करता है- यह तब उपयोगी है जब आप ऐसी window को scroll करना चाहते हों जिसमें reference material हो और जिसे आप शायद ही चुनते हों
- अगर कई windows में अक्सर edit की जाने वाली दो windows हों, तो lambda function सेट करके सबसे हाल में इस्तेमाल हुई window को other window की तरह scroll कराया जा सकता है
- ऐसी settings का मेल
scroll-other-windowको इच्छित window scroll कराने में मदद करता है
- अगर स्क्रीन पर दो से ज़्यादा windows हों और जिस window को scroll करना हो वह Emacs द्वारा चुनी गई
बंद होने से इनकार: M-x emacs-lock-mode
- जब unsaved files हों, Emacs तब तक बंद होने से मना करता है जब तक आप हर फ़ाइल के साथ क्या करना है इसका जवाब न दे दें
emacs-lock-modeइस विचार को बढ़ाकर user को मनचाहे buffers lock करने देता है- lock हटने तक वह buffer kill होने से मना करेगा और
Buffer "*scratch*" is locked and cannot be killedजैसा संदेश दिखाएगा - अगर कोई locked buffer मौजूद हो, तो Emacs भी बंद होने से मना करेगा और
Emacs cannot exit because buffer "*scratch*" is lockedजैसा संदेश देगा - यह उन जानकारियों को गलती से खोने से बचाने में उपयोगी है जो किसी visited file में नहीं हैं, या यह याद दिलाने में कि उस buffer में अभी काम बाकी है
- Org-capture के बाद पहली समस्या अब कम होती है, लेकिन shell·compilation buffers, websites, और दूसरी special applications के output या state को न खोने के लिए यह अब भी उपयोगी है
फ्रेम को वापस लाएँ: M-x undelete-frame-mode, M-x undelete-frame
- अगर आपने मेहनत से सेट किया गया Emacs frame गलती से बंद कर दिया हो, तो
undelete-frameसे उसे वापस लाया जा सकता है - यह फीचर इस्तेमाल करने के लिए
undelete-frame-modeचालू होना चाहिए - यह frames के लिए वही काम करता है जो built-in
winnerऔरtab-bar-historywindows के लिए करते हैं - अगर
undelete-frame-modeको Emacs के साथ हमेशा चालू रखा जाए, तो frame बंद हो जाने की चिंता कम हो सकती है - हटाए गए ज़्यादा से ज़्यादा 16 frames बहाल किए जा सकते हैं
बाकी फीचर्स और छोड़ी गई चीज़ें
- पिछले 6 साल में सामने आए फीचर्स में से 2026 की Emacs उपयोग-हक़ीक़त में टिके रहने वाले फीचर्स 20 हैं
- संयोग से मिले कई Emacs libraries, आम users की ज़रूरतों के लिए स्थिर समाधान से ज़्यादा एक तरह की software archaeology जैसी दिलचस्पी रखती थीं
allout-modeOrg mode जैसा किसी समानांतर दुनिया का outline manager है, जिसमें Org के speed-key और subtree-wise encryption जैसी क्षमताएँ हैंshadowfileEmacs के भीतरunisonलागू करता है, लेकिन इसकी उपयोगिता संदिग्ध हैdouble-modequailसे पहले का, key conversion आधारित non-keyboard character input तरीका हैbslibrary, ज़्यादा smartlist-bufferscommand बनाने की कोशिश थी, लेकिनibufferबेहतर होने के कारण इसे इस्तेमाल करने की वजह नहीं बचीelectric-pair-modeसे region को delimiters में wrap करने जैसी ऊपर से उपयोगी दिखने वाली चीज़ें भी उनकी जटिलता के मुक़ाबले कम फ़ायदेमंद होने के कारण शामिल नहीं की गईं- ऐसे कामों के लिए
wrap-region,smartparens,embraceजैसे external packages बेहतर हैं apptजैसी Org और Org-adjacent built-in libraries दिलचस्प हैं, लेकिन उन पर अलग लेख चाहिए क्योंकि उनका दायरा बड़ा हैthunkजैसी libraries, जो मुख्यतः Elisp developers के लिए उपयोगी हैं, उनकी भी अलग से समीक्षा चाहिए- Emacs के साथ आने वाली
lispdirectory बहुत बड़ी नहीं है, लेकिन उपयोगी default फीचर्स आगे भी मिलते रहने की गुंजाइश है
1 टिप्पणियां
Lobste.rs की राय
find-file(C-x C-f) में*foo*.txtकी तरह wildcard से कई files खोलना अक्सर गलती से हो जाता है, इसलिए wildcard इस्तेमाल होने परfind-fileतुरंतdiredखोले, इसके लिएfind-file-noselectपरadvice-addलगाया हुआ हैजब
file-expand-wildcardsका result 2 या उससे ज़्यादा हो, तो उसेdired-noselectको दे दिया जाता है, नहीं तो मूलfind-file-noselectको कॉल किया जाता हैruler-modeवाकई मज़ेदार है। मुझे बिल्कुल पता नहीं था कि Emacs में ऐसी WYSIWYG feature भी है, और Emacs सच में अजीब लेकिन आनंददायक software हैमुझे लगता था कि सिर्फ सामान्य Emacs इस्तेमाल करते हुए मैं लगभग सब देख चुका हूँ, लेकिन खोजने के लिए अभी बहुत कुछ बाकी था।
ruler-modeलिखने के लिए काफ़ी बढ़िया हैपहले मैं Magit बहुत ज़्यादा इस्तेमाल करता था, लेकिन अब built-in
vc-modeऔरdifftools पर आ गया हूँ, और दोनों बहुत अच्छी तरह काम करते हैं, इसलिए संतुष्ट हूँमुझे ऐसे लेख पसंद हैं। Emacs या Neovim जैसे जटिल और customize किए जा सकने वाले editor इस्तेमाल करते समय, अक्सर लोग पहले यह समझने से पहले कि base editor क्या कर सकता है, bloated distribution इंस्टॉल कर लेते हैं और बहुत जल्दी आगे बढ़ने लगते हैं
समय हो तो manual पढ़ना और शुरुआत से अपनी configuration बनाना काफ़ी संतोषजनक होता है। Emacs का एक कम-ज्ञात function
finder-list-keywordsहै; इसे चलाने पर ऐसा menu खुलता है जिससे Emacs की वे सुविधाएँ खोजी जा सकती हैं जिन्हें ढूँढना मुश्किल होता है। उदाहरण के लिए, क्या तुम्हें पता था कि इसमें built-in games 24 हैं?