Y $ y के बजाय Y का पर्याय क्यों है?


28

क्या इसका कोई विशिष्ट ऐतिहासिक कारण है?


पृष्ठभूमि - (यदि आप पहले से ही प्रश्न को समझते हैं तो आप इस भाग को छोड़ सकते हैं।)

जैसा कि मध्यवर्ती / उन्नत viउपयोगकर्ताओं को पता होगा, y"yank" कमांड है- यह निम्नलिखित आंदोलन कमांड द्वारा निर्दिष्ट पाठ को कॉपी (कॉपी) करता है। * इस प्रकार yeशब्द के अंत में y0yanks, कर्सर की स्थिति से लाइन की शुरुआत तक yanks। y_पूरी वर्तमान लाइन को y$यैंक्स करता है, कर्सर की स्थिति से वर्तमान लाइन के अंत तक इत्यादि।

d(हटाना) आदेश और c(बदलें) आदेश दोनों इन प्रस्तावों के सभी के साथ-साथ प्रयोग किया जा सकता है।

ddके लिए एक पर्याय है d_और पूरी वर्तमान लाइन को हटा देता है। इसी तरह, के ccलिए एक पर्याय है c_और वर्तमान लाइन को बदल देगा (यानी यह सभी पाठ को हटा देगा और आपको लाइन की शुरुआत में सम्मिलित मोड में डाल देगा)। **

"यांक" कमांड इस सम्मेलन का अनुसरण करता है; yyपूरी तरह से वर्तमान लाइन की तरह yank करेगा y_

समानार्थक शब्द का एक और सेट है: के Dलिए एक समानार्थी शब्द है d$और कर्सर स्थिति से पंक्ति के अंत तक हटा देगा। Cके लिए एक समानार्थी है c$और कर्सर को स्थिति से पंक्ति के अंत तक बदल देगा, आपको नए पाठ को टाइप करने के लिए सम्मिलित मोड में रखेगा।

हालांकि, Yहै एक और के लिए पर्याय yyया y_और झटका होगा पूरे लाइन के रूप में आप से उम्मीद होती है पंक्ति के अंत में, बस नहीं कर्सर से Cऔर Dपैटर्न।


मैं समझता हूं कि विम में पिछड़ी अनुकूलता को बनाए रखने के लिए इसे रखा गया था vi, जैसा कि नीचे दिए गए विम मदद में उल्लिखित है :help Y:

यदि आपको कर्सर से लाइन के अंत तक काम करने के लिए "वाई" पसंद है (जो अधिक तार्किक है, लेकिन वीआई-संगत नहीं है) ": मैप वाई वाई $" का उपयोग करें।

तो यह एक होल्डओवर है vi। ठीक।

लेकिन, पहली जगह में कमांड को इस तरह क्यों बनाया गया था? क्या इसका कभी कोई तर्क था?


* विशेष रूप से यह पाठ को रजिस्टर 0 में रखता है और रजिस्टर 0 पर अनाम रजिस्टर को इंगित करता है।

** हालांकि यह मेरे सवाल के लिए प्रासंगिक नहीं है, Sके लिए एक और पर्याय है ccया c_


3
मुझे यकीन नहीं है कि इसे क्यों बनाया गया था। आपको इसके बारे में बिल जॉय से पूछना होगा। हालाँकि, यह एक तार्किक बग है, जो कि मूल vi में कभी तय नहीं किया गया है और फिर इसे सभी क्लोनों में बनाया गया है और अंततः POSIX द्वारा इसकी मांग की गई है।
क्रिश्चियन ब्रेबेंड

3
अगर आपको कभी इसका जवाब मिलता है तो उन्हें यहां इसकी जरूरत है । ;)
joeytwiddle

1
मुझे संदेह है कि यह वास्तविक कारण है, लेकिन जिस व्यक्ति ने वाई पर आपत्ति जताई थी, उसे इस बात का तर्क दिया गया था कि एक सी प्रोग्रामर के रूप में, वे पूरे-लाइन यैंकिंग की तुलना में कहीं अधिक दूरी तक लाइनिंग करते थे, और इसलिए डिफ़ॉल्ट मैपिंग अच्छे हैं। YMMV: मेरा निश्चित रूप से करता है।
रिच

जवाबों:


16

मुझे विलियम जॉय (vi निर्माता) और मार्क हॉर्टन (1979 से vi अनुरक्षक) द्वारा एक पेपर "एन इंट्रोडक्शन टू डिस्प्ले एडिटिंग विद विथ" मिला

कागज से यह स्पष्ट है कि डिफ़ॉल्ट वाई व्यवहार एक गलती नहीं है, लेकिन एक वांछित विशेषता है। में "उलटफेर और डुप्लिकेट पाठ" खंड वे यह उल्लेख:

Try the command YP. This makes a copy of the current line 
and leaves you on this copy, which is placed before the current line. 
The command Y is a convenient abbreviation for yy. 
The command Yp will also make a copy of the current line, 
and place it after the current line. 
You can give Y a count of lines to yank, and thus duplicate 
several lines try 3YP.

बाद में आदेशों की सूची में ( पीडीएफ संस्करण में परिशिष्ट देखें ), वाई के लिए विवरण यह है:

Y  Yanks a copy of the current line into the unnamed buffer, 
   to be put back by a later p or P; a very useful synonym for yy.

इस तरह मुझे यकीन है कि वाई एक फीचर था और बग नहीं था।

के साथ असंगतता के लिए Dऔर C- मेरे पास एक तार्किक व्याख्या भी है। यदि आप अपनी मुख्य इच्छा से एक पाठ संपादक लेखक के रूप में सोचने की कोशिश करते हैं, तो यह होगा कि आप नया पाठ बनाएं और इसे हटाएं नहीं। वे (पाठ संपादक लेखक) चाहते हैं कि उनके उपयोगकर्ता अधिक से अधिक पाठ लिखें और अधिक से अधिक ...

इसलिए वाक्य-रचना चीनी आज्ञाओं के लिए (और Y, Dऔर Cतरह-तरह की चीनी-युक्त चीनी होती है क्योंकि वे पहले से मौजूद सुविधाओं की नकल करते हैं) वे उन ऑपरेशनों को चुनते हैं जो जितना संभव हो उतना पाठ जोड़ते हैं ( Yपूरी लाइन को दोहराते हैं) या जितना संभव हो उतना कम पाठ हटाएं ( Dऔर Cहटाएं लाइन का अंत और पूरी लाइन नहीं)।


ठीक है, मुझे पसंद है YP; यह त्वरित और टाइप करने में आसान है। मैं सहमत हूं। ;)
वाइल्डकार्ड

8

Yपहले vi संस्करण (पूर्व 1.1, 1 जनवरी, 1978) का यान कमांड था। इस संस्करण में yyकैममंड नहीं था । पूर्व 2.2 (6 मई, 1979) में दोनों yyऔर थे Y। तो वास्तव yyमें Y( Yभविष्यवाणी yy) के लिए एक पर्याय है ।


यही असली जवाब है। Yअन्य आदेशों के समान तर्क का पालन नहीं करता है क्योंकि यह उस चीज से पहले की बात है जिसे बाद में संक्षिप्त नाम के रूप में लिया गया था।
मेचलिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.