Bash (लिनक्स शेल) में Ctrl + V पेस्ट क्यों नहीं होता है?


192

जब मैं क्लिपबोर्ड में कुछ कॉपी करता हूं और बैश में Ctrl+ दबाता हूं V, तो कुछ भी नहीं होता है; हालाँकि, पेस्ट पर राइट क्लिक और चयन करना काम करता है।

क्यों? क्या लिनक्स में इस व्यवहार के पीछे कोई उचित मुद्दा है (मुझे यकीन है कि वहाँ है)?


25
Shift- Insertयह भी काम करता है
bonyiii

33
मैं Ctrl-Shift-Vव्यक्तिगत रूप से पसंद करता हूं ।
आमलोग am

3
आप अधिकांश शेल वातावरण में Shift + Insert का उपयोग भी कर सकते हैं ।
फाबियान

4
यदि आपके पास इन्सर्ट कुंजी नहीं है तो क्या होगा?
बेन राहिकोट

3
यह विंडोज के कमांड प्रॉम्प्ट में भी काम नहीं करता है
fuclv

जवाबों:


360

भौतिक टर्मिनलों के दिनों में , सत्र-व्यापी क्लिपबोर्ड मौजूद नहीं थे, केवल कुछ कार्यक्रमों ने आंतरिक कॉपी / पेस्ट का समर्थन किया - अक्सर "बफ़र्स" या "किल रिंग्स" के नाम से - और विभिन्न विभिन्न कीस्ट्रोक्स का उपयोग किया। उदाहरण के लिए, बैश शेल "यैंक" (पेस्ट) के लिए CtrlKया CtrlU"मार" (कट) का उपयोग करता है CtrlY; इस से आता है Emacs संपादक

CtrlCयूनिक्स में लगभग हर जगह "इंटरप्ट" कुंजी थी , जिसका उपयोग वर्तमान कार्यक्रम या संचालन को रद्द करने के लिए किया जाता था। CtrlVकुंजी अक्सर मतलब था "शब्दशः डालने" - जो है, किसी भी संबद्ध क्रिया करने के बिना सचमुच निम्नलिखित चरित्र डालें। उदाहरण के लिए, vi संपादक Escमें कमांड मोड के लिए एक सामान्य स्विच , लेकिन , दस्तावेज़ में चरित्र को सम्मिलित करेगा ।CtrlVEscESC

सेशन-वाइड क्लिपबोर्ड से कॉपी करने CtrlCऔर CtrlVपेस्ट करने का उपयोग मैक ओएस द्वारा 1983 और माइक्रोसॉफ्ट विंडोज 3.x में 1990 में पेश किया गया था। (इससे पहले विंडोज संस्करण (1.x और 2.x), साथ ही आईबीएम ओएस / 2 , केवल IBM CUA कुंजी CtrlInsको कॉपी करने और ShiftInsचिपकाने के लिए समर्थित है; ये शॉर्टकट सभी विंडोज संस्करणों द्वारा समर्थित हैं।)

जब क्लिपबोर्ड समर्थन के साथ GUIs अंत में यूनिक्स तक पहुंच गए, तो Ctrlकई टर्मिनल कार्यक्रमों द्वारा कीबोर्ड पहले से ही उपयोग में थे। इसके अलावा, एक्स ग्राफिकल इंटरफ़ेस में कुछ अलग तंत्र थे : "चयन" और "कट बफ़र्स"। अब भी आप किसी भी स्पष्ट प्रतिलिपि कार्रवाई के बिना, एक कार्यक्रम में पाठ का चयन कर सकते हैं और मध्य माउस बटन का उपयोग करके इसे सम्मिलित कर सकते हैं।

संक्षेप में, जब तक Xterm और GNOME टर्मिनल लिखे गए (मैं अनुमान लगा रहा हूं कि आप बाद का उपयोग कर रहे हैं), CtrlV पहले से ही कई वर्षों के लिए एक पूरी तरह से अलग अर्थ था और इसे बदला नहीं जा सकता था। इसके अलावा, पाठ की प्रतिलिपि बनाने का एक वैकल्पिक तरीका - "चयन" - पहले से ही X11 में मौजूद था, इसलिए स्पष्ट रूप से कॉपी / पेस्ट क्रिया को संभवतः उतना महत्वपूर्ण नहीं माना जाता था जितना कि विंडोज में होगा। इसका मतलब है कि विभिन्न कीबोर्ड शॉर्टकट का चयन किया जाना था - उदाहरण के लिए, अधिकांश आधुनिक टर्मिनल प्रोग्राम, जैसे गनोम टर्मिनल, उपयोग CtrlShiftCऔर CtrlShiftV। (यदि आप Xterm का उपयोग करते हैं, तो उसी शॉर्टकट को XTerm * vt100 * अनुवाद Xresource का उपयोग करके मैन्युअल रूप से जोड़ा जा सकता है । Rxvt के पास ऐसा कोई विकल्प नहीं है।)

(अधिकांश X11 टूलकिट सीयूए "कॉपी" और "पेस्ट" कुंजी का भी समर्थन करते हैं, जो टर्मिनल कार्यक्रमों के साथ संघर्ष नहीं करते हैं। दुर्भाग्य से, कार्यान्वयन बल्कि असंगत हैं - CtrlInsअधिकांश कार्यक्रमों (जीटीके, क्यूटी 4) में "क्लिपबोर्ड" पर प्रतियां, लेकिन द्वारा अनदेखा Xaw), हालांकि, ShiftInsअधिकांश GTK और Qt4 कार्यक्रमों में "प्राथमिक चयन" से चिपकाता है, लेकिन फ़ायरफ़ॉक्स में "क्लिपबोर्ड" से, और अब-अप्रचलित Xaw में अब-कट-बफ़र्स से।)


सब ने कहा, कुछ टर्मिनल या शान्ति (विशेष रूप से, Windows 10 कंसोल) कर इन कुंजियों समर्थन करते हैं। जैसा कि विंडोज कंसोल में हमेशा एक अलग "चिह्न / चयन" मोड होता था, CtrlCअब संदर्भ के आधार पर भी दो अर्थ हैं - नियमित मोड में यह एक बाधा भेजता है, चयनित मोड में यह क्लिपबोर्ड पर कॉपी करता है (जैसे Enterउपयोग किया जाता है)।

इस बीच, विंडोज कमांड-लाइन टूल कभी भी किसी चीज के लिए उपयोग नहीं किया जाताCtrlV है, इसलिए यह बहुत कुछ भी परेशान किए बिना "पेस्ट" करने के लिए बाध्य था। हालांकि यूनिक्स जैसे टर्मिनलों पर ऐसा करना अधिक समस्याग्रस्त होगा।


10
हम्म। विम में, "यंक" का मतलब पेस्ट के बजाय कॉपी है। यह और भी समझ में आता है। क्या आप इस शब्द के अर्थ के बारे में निश्चित हैं?
कोनराड रुडोल्फ

11
हाँ मुझे यकीन है। बैश उनके Emacs समकक्षों से डिफ़ॉल्ट शॉर्टकट विरासत में मिला ।
गुरुत्व

4
@grawity: आपकी अंतिम टिप्पणी एक किशोर सा गुमराह है। बैश कमांड-लाइन एडिटिंग के दो मोड, विम-मोड और एमएसीएस-मोड प्रदान करता है। यह सिर्फ ऐसा होता है कि emacs- मोड अधिकांश इंस्टॉल पर डिफ़ॉल्ट है। यह यश शब्द के उपयोग में अस्पष्टता को बढ़ाता है , यहां तक ​​कि बैश के लिए भी।
रहमु r

1
ए-हा! मुझे पता था कि विम्परेटर डेवलपर्स ने एक गलती की थी जब वे संस्करण 3 में बदल <C-v>गए iथे, लेकिन मैं अपनी उंगली को क्यों नहीं डाल सकता था ।
इजाकाता

2
@ कोलिन: आपने अभी भी क्लिपबोर्ड और एक्स चयन के बीच अंतर को याद किया। कई चयन (PRIMARY, SECONDARY, CLIPBOARD) हैं, लेकिन उनमें से केवल एक को आमतौर पर "क्लिपबोर्ड" कहा जाता है - CLIPBOARD का चयन, क्योंकि यहीं से Ctrl-C की प्रतिलिपि बनती है, और यहीं से Ctrl-V का चयन होता है। प्राथमिक चयन क्लिपबोर्ड नहीं है।
ग्रैविटी

47

CtrlShiftVचिपकाने के लिए उपयोग करें ।

Ctrl अन्य वर्णों के साथ आमतौर पर शेल द्वारा विशेष कार्यों के लिए उपयोग किया जाता है।


4
तो क्यों लिनक्स बजाय विशेष कार्यों के लिए CTRL + SHIFT पंजीकृत नहीं करता है; मुझे लगता है कि कॉपी-पेस्ट कुछ उपयोगकर्ताओं द्वारा उस विशेष कार्य की तुलना में अधिक विशिष्ट है, है ना?
यासर ज़मानी

22
शैलियां पहले से ही मौजूद हैं, जिसमें कट और पेस्ट कार्यक्षमता के साथ ग्राफिकल टर्मिनल और जीयूआई थे, इसलिए आपका तर्क वास्तव में मान्य नहीं है। @YasserZamani
slhck

9
Ctrl + Shift + V को टर्मिनल एमुलेटर द्वारा निष्पादित किया जाता है (यह मानते हुए कि आप GNOME टर्मिनल का उपयोग कर रहे हैं) और bashस्वयं द्वारा नहीं । यदि आप कभी भी GUI वातावरण के बाहर हैं, या यदि आप किसी अन्य शब्द एमुलेटर का उपयोग कर रहे हैं, तो यह संभवत: काम नहीं करेगा। यह मत सोचो कि यह कमांड पोर्टेबल है।
रहमु

@ प्रहमु ओह, उस के बारे में कोई पता नहीं था। केवल स्टॉक उबंटू इंस्टॉल का उपयोग करें। क्या कोई सार्वभौमिक आदेश है?
आकाश

2
संभवतः क्लिपबोर्ड तक पहुँचने के लिए एक नहीं है (केवल प्राथमिक चयन के लिए Shift + Ins)। यहां तक ​​कि क्लिपबोर्ड अपने आप में एक X11 चीज है, जो टटी से सुलभ नहीं है। हालाँकि, Ctrl + Shift + V को GNOME टर्मिनल, Xfce4 Terminal, KDE Konsole द्वारा समर्थित है; यह सबसे लोकप्रिय जीयूआई वातावरण को कवर करता है।
grawity

20

यहां लोकप्रिय टर्मिनलों के साथ आपकी सामान्य प्रयोजन की कॉपी पेस्ट सेटिंग्स हैं:

सूक्ति-टर्मिनल (लिनक्स पर सबसे लोकप्रिय)
कॉपी : CtrlShiftC
पेस्ट : CtrlShiftV
नोट : चयन-टू-कॉपी और middle-clickपेस्ट करने के लिए भी काम करता है, लेकिन यह एक वैकल्पिक क्लिपबोर्ड का उपयोग करता है।

पुट्टी (विंडोज में सबसे लोकप्रिय टर्मिनल)
कॉपी : (माउस के साथ चयन करें, कोई कुंजीपटल बातचीत)
का पेस्ट : Right-click (या अधिक मज़बूती से: shiftRight-click)
नोट : ऐसे ऐप्स जो माउस इनपुट (जैसे लेने vimऔर links) चोरी कर सकते हैं Right-click- shiftRight-clickहमेशा किसी भी अनुप्रयोग में काम करेंगे।

OSX टर्मिनल
कॉपी : AppleC
पेस्ट : AppleV
नोट: माउस नियंत्रण (जैसे vimऔर links) लेने वाले एप्लिकेशन पाठ का चयन करने के लिए क्या मतलब है, को ओवरराइड कर सकते हैं, इस मामले में कॉपी उस तरह से काम नहीं करेगी जैसे आप इसकी उम्मीद करते हैं। उन मामलों में, Controlजब आप माउस को चयन करने के लिए खींचते हैं , तो दबाए रखें । ऐप्स के साथ माउस इंटरैक्शन आपकी टर्मिनल सेटिंग्स में डिफ़ॉल्ट रूप से अक्षम है, इसलिए अधिकांश लोगों को इसके बारे में पता भी नहीं होगा।


cmd.exeविंडोज पर PuTTY से ज्यादा लोकप्रिय नहीं है ? :-)
बेन

@ एसएसएच टर्मिनल के रूप में नहीं।
tylerl

1
नहीं, cmd.exeSSH टर्मिनल नहीं है। यह बिल्कुल सच है।
बेन

3
@ बीन: यह एक टर्मिनल नहीं है - केवल एक शेल। विंडोज में डिफ़ॉल्ट टर्मिनल सीएसआर का "विंडोज कंसोल" घटक है।
grawity

@ लेकिन राइट-क्लिक करने के लिए पेस्ट भी काम करता है cmd.exe(और वहां एकमात्र तरीका है, अगर आप क्विक एडिट मोड में मेनू> एडिट> पेस्ट) नहीं खोलना चाहते हैं । पूर्व -1010 कमांड प्रॉम्प्ट में कोई शॉर्टकट नहीं है
phuclv

17

यह एक गहरी जड़ वाली परंपरा है कि Ctrlएक पत्र के साथ कुंजी ऊपरी केस पत्र के एएससीआईआई मूल्य से 64 घटाकर एएससीआईआई नियंत्रण वर्ण उत्पन्न करती है। यह गणना मानचित्र Ctrl- A1 से, और इसी तरह। उदाहरण के लिए Ctrl- Iहै Tabऔर Ctrl- Jलाइनफीड है।

वहाँ के लिए कोई समान परंपरा है Ctrl- ShiftCtrl- Shift- Vकिसी विशिष्ट चरित्र का निर्माण करने की उम्मीद नहीं है।

टर्मिनल एमुलेटर को Ctrlकन्वेंशन के माध्यम से पारदर्शी रूप से गुजरने से परंपरा का समर्थन करना चाहिए , यह उस टर्मिनल विंडो के माध्यम से संचालित होने वाले कार्यक्रमों के चरित्र इनपुट के रूप में प्रकट होता है। टर्मिनल-आधारित प्रोग्राम कमांड के लिए नियंत्रण कुंजी को मैप करते हैं। उदाहरण के लिए, बैश उपयोग करता है Ctrl- Vएक कमांड के रूप में जिसका अर्थ है "अगले अक्षर को शाब्दिक रूप से लें"। यह आपको कमांड लाइन में एक कंट्रोल कैरेक्टर एम्बेड करने की अनुमति देता है। यदि टर्मिनल अपने स्वयं के उपयोग के लिए नियंत्रण कुंजी चुराता है, तो ऐसे आदेश अनुपलब्ध हो जाते हैं। इसलिए इंटरसेप्टिंग Ctrl- Vमेटा-फंक्शन के लिए प्रश्न से बाहर है (कम से कम डिफ़ॉल्ट कॉन्फ़िगरेशन में)।

हालांकि, टर्मिनल एमुलेटर अवरोधन के लिए स्वतंत्र हैं Ctrl- Shift- Vजो एक चरित्र उत्पन्न करने की उम्मीद नहीं है। Ctrl- Shift- Vएक मानक नहीं है; यह एक गनोम टर्मिनल चीज़ है (जो कुछ अन्य टर्मिनलों में हो सकती है)।

X- आधारित यूनिक्स डेस्कटॉप पर कन्वेंशन यह है कि कॉपी करने के लिए किसी कमांड की आवश्यकता नहीं है। आप बस पाठ का चयन करें। और बीच का बटन उस टेक्स्ट को कहीं और चिपका देता है। आप पाएंगे कि यह Xterm, Gnome Terminal और Firefox में समान रूप से काम करता है।

Ctrl- Vएक माइक्रोसॉफ्ट विंडोज सम्मेलन है, जो कि नकल है Apple- Vमैकिंटोश से।


3
यह बिल्कुल घटाव नहीं है - परंपरागत रूप से Ctrl ने वर्ण के 6 और 7 बिट्स को साफ कर दिया है ; इसकी वजह से, Ctrl + Shift + अक्षर अधिकतर टर्मिनलों में Ctrl + लेटर के लिए अनौपचारिक रूप से काम करता है (जब तक कि यह टर्मिनल द्वारा ओवरराइड नहीं किया जाता है, जैसा कि कॉपी / पेस्ट शॉर्टकट के मामले में होता है)।
दोपहर

1
क्योंकि चाबियाँ अनिवार्य रूप से यादृच्छिक रूप से ASCII मानक के संबंध में आदेशित हैं, प्रोग्राम ROM में कई लुक-अप टेबल शामिल हैं जो ASCII कोड की पीढ़ी में सहायता करते हैं। ... दूसरी कुंजी दबाए जाने पर नियंत्रण कुंजी को दबाए रखने के कारण दूसरी तालिका दिखती है। [VT100 श्रृंखला तकनीकी मैनुअल, 4.4.9.3, डिजिटल]।
कज़

1
@ लिंग संपादित करने के लिए धन्यवाद। यह अच्छी तरह से प्रस्तुत करता है, लेकिन <kbd>भविष्य के पोस्ट में इन सभी टैगों को टाइप करने का कोई तरीका नहीं है ।
कज़

Ctrl-Aहै 1। मैं यह कैसे कोशिश कर सकता हूं? जब मैं प्रेस करता हूं तो मेरा गनोम टर्मिनल कुछ नहीं करता है Ctrl-A
रॉबर्ट

3

मेरे लिए, शेल में पेस्ट कॉपी करने का सबसे सरल तरीका है:

इच्छित कोड का चयन करें और फिर उस पर क्लिक करके इसे चिपकाएँ mouse-middle-key


1
जब तक आपके पास एक मध्य माउस कुंजी है।
जिपरसन

1
@ जिपरसन नहीं है कि मैं दृढ़ता से यह सिफारिश कर रहा हूं, लेकिन आप एक छोटी सी स्क्रिप्ट लिख सकते हैं जो बस xdotool click 2तीसरे-बटन का अनुकरण करने के लिए उपयोग करता है। फिर, आप जो भी विंडो मैनेजर / डेस्कटॉप वातावरण में हैं, आप इस स्क्रिप्ट को एक कुंजी से जोड़ सकते हैं - कह सकते हैं mod i(डालने के लिए) या आपके पास जो भी कीबाइंडिंग उपलब्ध हो सकती है (या जो भी मॉड का मतलब हो सकता है - जो वास्तव में इस बात पर निर्भर करता है कि आप इसे कहाँ बाँधते हैं)
dylnmc

2

हम कॉपी और पेस्ट करने के लिए इन्सर्ट कीबोर्ड बटन का उपयोग कर सकते हैं (पुराने कीबोर्ड में यह गायब हो सकता है)

कॉपी : CtrlInsert
पेस्ट :CtrlShiftInsert


1

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

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