क्या इसका कोई विशिष्ट ऐतिहासिक कारण है?
पृष्ठभूमि - (यदि आप पहले से ही प्रश्न को समझते हैं तो आप इस भाग को छोड़ सकते हैं।)
जैसा कि मध्यवर्ती / उन्नत vi
उपयोगकर्ताओं को पता होगा, y
"yank" कमांड है- यह निम्नलिखित आंदोलन कमांड द्वारा निर्दिष्ट पाठ को कॉपी (कॉपी) करता है। * इस प्रकार ye
शब्द के अंत में y0
yanks, कर्सर की स्थिति से लाइन की शुरुआत तक 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_
।