सामान्य मोड में j, CTRL-J, <NL> और CTRL-N में क्या अंतर है?


12

मैंने वेब पर किसी ऐसे व्यक्ति को देखा जिसका उपयोग कर Ctrl-Jरहा था और जैसा कि मुझे नहीं पता था कि इस मैपिंग को मैंने संबंधित डॉक्टर में देखा और निम्नलिखित पाया:

j           or
<Down>      or
CTRL-J      or
<NL>        or
CTRL-N          [count] lines downward linewise.

जो मुझे कई प्रश्नों की ओर ले जाता है:

  • क्या है<NL> : मैं इसे बराबर के रूप में देखूंगा <CR>क्योंकि दबाने Enterपर सामान्य रूप से एक पंक्ति सामान्य रूप से नीचे चली जाएगी लेकिन यह <NL>यहां क्यों है और नहीं <CR>?
  • इन मैपिंग में क्या अंतर है : क्या इन 5 विकल्पों में से सभी एक ही तरह से एक पंक्ति नीचे जाते हैं? मेरे परीक्षणों के अनुसार मैं हाँ में उत्तर दूंगा लेकिन इससे मेरा अगला प्रश्न बन जाएगा।
  • ठीक उसी काम को करने के लिए 5 मैपिंग क्यों हैं : मैं इसे समझ सकता हूं jऔर <down>उन उपयोगकर्ताओं के लिए रखा जाता है जो मैपिंग का उपयोग करने के लिए उपयोग नहीं किए जाते हैं, लेकिन अन्य मैपिंग क्यों मौजूद हैं?
  • जब एक से अधिक का उपयोग करना अधिक दिलचस्प होता है : तो यह पिछले प्रश्न का एक निरंतरता है: यदि बहुत संभावनाएं हैं तो मुझे लगता है कि उनके अलग-अलग फायदे हैं या विशिष्ट उपयोग के मामलों में उपयोग करना बेहतर है। वे उपयोग के मामले क्या हैं?

मैं भी इन आदेशों की अतिरेक अधिक अजीब जब मैं देखो लगता है :h kवहाँ तक जाने के लिए केवल 3 तरीके हैं:: k, <UP>और ctrl-p। तो बोनस सवाल यह है: नीचे जाने के लिए 5 तरीके क्यों हैं और केवल 3 ऊपर जाना है?


क्या आप सुनिश्चित हैं कि वे डिफ़ॉल्ट Ctrl-Jबाइंडिंग का उपयोग कर रहे थे ? यह सामान्य प्रतीत होता है, कम से कम उन लोगों के बीच, जिन्हें मैं जानता हूं, Ctrl-J/K"प्रारंभ लाइन के समान इंडेंटेशन स्तर के साथ अगली पंक्ति तक" नीचे / ऊपर मैप करने के लिए।
हारून ड्यूफोर

4
मैं "क्यों नीचे जाने के लिए 5 तरीके हैं और केवल 3 ऊपर जाने के लिए जवाब देना चाहते हैं?" अच्छा - ऐसा इसलिए है, क्योंकि जीवन में, चीजें दक्षिण में आसान हो जाती हैं! :)
VanLaser

@VanLaser वास्तव में महान जवाब, वे डॉक्टर में इस संकेत को जोड़ने पर विचार करना चाहिए! ;-)
statox

@VanLaser बहुत बुरा यह नहीं है। उस दर से सभी मानवता कुछ ही समय में शून्य में उतर जाएगी!
xji

जवाबों:


16

दिलचस्प है कि आपने उल्लेख किया <CR><CR>या गाड़ी वापसी, तकनीकी रूप से लाइन के शुरू में जाने का मतलब था<NL>, या नईलाइन उर्फ ​​लाइन फीड (आमतौर पर कहा जाता है LF) का उपयोग अगली पंक्ति में जाने के लिए किया जाता था । समय के साथ, अधिकांश अनुप्रयोगों में अंतर खो गया था। 1 दबाने से Enterवास्तव में एक गाड़ी की वापसी होती है, आमतौर पर (दबाने की कोशिश करें CtrlVEnter- आपको ^Mयूनिक्स टर्मिनलों में देखना चाहिए )। <NL>के नियंत्रण कोड है CtrlJ

CtrlNमुझे चौंका दिया। 2 के अनुसार , यह एक शिफ्ट आउट चरित्र है:man ascii

Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
────────────────────────────────────────────────────────────────────────
016   14    0E    SO  (shift out)             116   78    4E    N

में बदलाव और बाहर पारी वर्ण, के अनुसार विकिपीडिया :

... शिफ्ट करने का एक तरीका प्रदान किया गया है, इसलिए नामकरण, एक रंगीन रिबन, आमतौर पर लाल और काले रंग के साथ एक विद्युत-यांत्रिक टाइपराइटर या टेलीप्रिंटर में लाल और काले, ऊपर और नीचे के साथ विभाजित होता है ...

यह कैसे समाप्त हुआ अर्थ नीचे जाना मेरे लिए एक रहस्य है।


नीचे जाने के लिए 5 तरीके क्यों हैं और केवल 3 ऊपर जाना है?

खैर, ऊपर जाने के तीन तरीकों में नीचे जाने के लिए इसी तरीके हैं। ( CtrlPसंभवत: का पूरक है CtrlN, जिसका अर्थ है कि शिफ्ट इन / आउट यहां प्रासंगिक नहीं है)। अतिरिक्त दो तरीके नीचे ( <NL>या CtrlJ) वास्तव में एक ही तरीके के दो प्रतिनिधित्व हैं। <NL>टाइपराइटर दिनों से एक विरासत है - और उन दिनों में, मुझे नहीं लगता कि ऊपर जाने के लिए एक कुंजी थी - केवल नीचे जाने के लिए।

यह सभी देखें:

1 यह अभी भी कुछ मामलों (प्रिंटिंग \r(कैरिज रिटर्न) और \n(लाइन फीड) में सबसे स्वरूपित मुद्रण कार्यों / टूल का उपयोग करके अभी भी पुराने अर्थ को बनाए रखता है।)।

2 इस तालिका को इस तरह से व्यवस्थित किया गया है कि वर्णमाला उसी लाइन पर वर्ण के नियंत्रण कोड से मेल खाती है।


3
मैंने हमेशा सोचा Ctrl-Nथा कि अगले के लिए था , और पिछले केCtrl-P लिए था । यही कारण है कि वे Emacs में वैसे भी खड़े होते हैं, जिसमें वे बंधे होते हैं next-lineऔर previous-line। इसके अलावा, Ctrl-Pमें शिफ्ट नहीं है ; यह डेटा लिंक से बच रहा हैमें शिफ्ट है Ctrl-O
लिथिस

@ लिथिस मैं सही खड़ा हूं।
मुरु

2
@ Lithis ईमानदारी से, केवल एक चीज जो मैं जानता हूं कि Emacs cx CE है।
मूरू

ऐतिहासिक और स्पष्ट उत्तर, बहुत बहुत धन्यवाद! मुझे उन पात्रों के एससी कोड के बारे में सोचना चाहिए जिसका उत्तर अक्सर वहां मौजूद होता है।
statox

@ एमुरु यह बहुत बुरा है क्योंकि Emacs के पास वास्तव में बहुत कुछ है, विशेष रूप से इसका ऑर्ग-मोड जो मेरे लिए बड़े पैमाने पर उपयोगी है। मेरा सुझाव है कि आप Spacemacs github.com/syl20bnr/spacemacs प्रोजेक्ट की जांच करें , जो विम अनुकरण पर बहुत अधिक ध्यान केंद्रित करता है ताकि आपको उपयोग करने के लिए किसी भी पारंपरिक Emacs कमांड को जानने की आवश्यकता न हो। शायद यह आपकी धारणा को थोड़ा बदल देगा।
xji

8

देखते हैं :help key-notation

  1. <NL>"लाइनफीड" और <CR>"गाड़ी वापसी" का मतलब है।

    वर्तमान लाइन को तोड़ने के दो अलग-अलग तरीके हैं। वे ऐतिहासिक रूप से विभिन्न नियंत्रण वर्ण (करने के लिए बाध्य कर रहे हैं ctrl-jऔर ctrl-m,) लेकिन आम तौर पर एक ही कुंजी के साथ डाला जाता है <CR>। मैं इस बात से सहमत हूं कि <NL>इस संदर्भ में उपयोग करना उचित लगता है।

  2. उन सभी "मैपिंग" (वे वास्तव में मैपिंग नहीं हैं) बिल्कुल उसी तरह का व्यवहार करते हैं।

  3. इतिहास, ज्यादातर, क्रॉस-प्लेटफॉर्म बाधाओं को भी।

    बिल जॉय के टर्मिनल के लिए कोई समर्पित गति कुंजियां नहीं थीं, लेकिन तीर की hjklचाबियाँ पर थे । चूंकि उस समय मोडल एडिटर्स दुर्लभ थे, इसलिए उन कुंजियों को दबाने से आप जो कुछ भी कर रहे थे उसमें संबद्ध चरित्र को सम्मिलित कर दिया। आप प्रेस करने के लिए किया था <C-h>, <C-j>, <C-k>और <C-l>स्क्रीन पर कर्सर ले जाने के लिए।

    आप देख सकते हैं, वहाँ काफी एक जैसी होने के बीच j, <C-j>, <NL>और <Down><C-n>आम तौर पर विम में "अगला" का अर्थ है, यह देखना आसान है कि यह अपने साथियों के साथ कैसे मिला।

  4. चूँकि वे सभी पर्यायवाची हैं, आप अपने लिए सबसे अच्छा काम करने वाले व्यक्ति का उपयोग करने के लिए स्वतंत्र हैं।

    <CR>, उदाहरण के लिए, अपने स्वयं के मैपिंग के लिए उपयोग करने के लिए एक दिलचस्प कुंजी है।


ज्ञानवर्धन के लिए धन्यवाद! मैं <CR>मैपिंग पर बहुत सहमत हूं । एक और सवाल: मुझे पता है कि उन "कुंजी संयोजनों" को वास्तव में मैपिंग नहीं कहा जाता है, लेकिन मुझे यकीन नहीं है कि मुझे उन्हें कैसे कॉल करना चाहिए?
statox

यह एक दिलचस्प सवाल है, मैं उन्हें "कमांड" कहना चाहता हूं।
रोमेनिल

मैं गलत हो सकता है लेकिन "कमांड" पूर्व मोड आदेशों की तरह की बात नहीं है :ls, :substitute, new, आदि ...?
statox

xएक "कमांड" भी है।
romainl

दरअसल मैं सिर्फ देखा कि दस्तावेज़ कॉल x, dd, c, आदि "कमांड"। तो आप सही होना चाहिए, मुझे लगता है कि jया ^Jभी आदेश हैं।
statox
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.