क्या इसका कोई विशिष्ट ऐतिहासिक कारण है?
पृष्ठभूमि - (यदि आप पहले से ही प्रश्न को समझते हैं तो आप इस भाग को छोड़ सकते हैं।)
जैसा कि मध्यवर्ती / उन्नत 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_।