पाठ के रूप में चयन चिपकाएँ बंद करो!


10

मैं वर्षों (30 या अधिक) (xterms में, अपनी खिड़की, gvim नहीं) के लिए VI और VIM का उपयोग कर रहा हूं और मेरे पास विम आदेशों की एक विशाल लाइब्रेरी है जो मैं चयन के रूप में माउस मध्य बटन का उपयोग करके विम देता हूं।

उदाहरण के लिए, मैं अक्सर चीजों की तरह होता ...

 vi {many_hundreds_of_files}
   paste vim commands using mouse - one paste per file.

चयन में बहुत सारे VIM कमांड शामिल होंगे जैसे कि परीक्षण, स्वरूपण, चारों ओर की रेखाएँ, इत्यादि, इत्यादि, आदि चीजें करने के लिए, और आमतौर पर समाप्त होता है: w और: अगला VIM आदेश, चयन के अंत में, आदि। इसलिए विम अगली फाइल में फिर से पेस्ट करने के लिए तैयार है। यह मुझे ऐसा करने के लिए विशेष स्क्रिप्ट (जैसे पर्ल-इन-एडिटिंग) की आवश्यकता के बिना, बहुत जटिल तरीके से बड़ी संख्या में फ़ाइलों को अपडेट करने देता है।

इनमें से कुछ विम कमांड पेस्ट 200+ लाइन लंबी होती हैं (टेक्स्ट फ़ाइलों में संग्रहीत मैं स्क्रीन पर पॉप-अप, और 'ऑल-ऑल'! ये हजारों फ़ाइलों के सेट में होने वाले बदलावों की एक बहुत कुछ बना देती हैं, जिन्हें मैं पुन: स्वरूपण करता हूं। लेकिन केवल फाइलों के विशिष्ट सेट के लिए, मेरे दिन-प्रतिदिन के काम के लिए नहीं। ईजी: टेक्स्ट या डेटा फ़ाइलों के लिए फिर से तैयार करना।

समस्या...

मेरे आखिरी सिस्टम पैच (फेडोरा 25) के दौरान विम अब माउस चयन के रूप में चिपकाता है और विम कमांड के रूप में नहीं, और मैं इसे रोक नहीं सकता!

यह अभी भी एक और प्रणाली (फेडोरा 24) पर ठीक काम करता है।

यदि मैं पाठ के रूप में चिपकाना चाहता हूं, तो मैं चिपकाने से पहले सम्मिलित मोड में प्रवेश करता हूं! मैं नहीं चाहता कि VIM स्वतः ही चयन पाठ को चिपकाए जब वह इन्सर्ट मोड में न हो। मैं समझता हूं कि यह एक सुरक्षा विशेषता के रूप में था, लेकिन मेरे लिए यह एक प्रमुख प्रयोज्य मुद्दा है।

मैंने ऐसी मशीन से डेटिंग टर्मो एंट्री (xterm-256color) वापस करने की कोशिश की है जो ऐसा नहीं करती है (विशेष रूप से "किमीस" टर्मो एंट्री)। मैंने vim ": सेट माउस =" सेटिंग (जो शून्य है!) को भी देखा है। मुझे नहीं पता कि यह xterm (संदिग्ध) है, या ऐसा कुछ है जो VIM (संभावना) में बदल गया है, और लॉग और Google बदल गया है।

हालांकि कुछ भी नहीं मुझे पुराने व्यवहार मिल रहा है।


उसी समस्या के साथ एक और उपयोगकर्ता मिला, कम विवरण, कोई समाधान नहीं unix.stackexchange.com/questions/346293/…
एंथनी

1
मुझे संदेह है कि इसमें vimबदलाव की संभावना अधिक है : कीबोर्ड के माध्यम से कुछ पता चल सकता vimहै xtermया माउस बटन के माध्यम से चिपकाया जा सकता है? मैं इस तरह के तंत्र को नहीं जानता। दूसरी ओर, xtermजानता है कि यह क्रियान्वित हो रहा है, vimइसलिए यह चिपकाने के साथ iऔर <esc> को घेरने का निर्णय ले सकता है । एक अलग तरह की टर्मिनल विंडो के साथ (ए) की कोशिश करें और (बी) vimएक अलग नाम के साथ कॉपी करें। इससे समस्या के कारण को कम करने में मदद मिलेगी।
Philippos

मैं @philippos से सहमत हूं। हो सकता है कि इसके अलावा कुछ और vimअपने पेस्ट विधि का अपहरण कर रहा हो। शायद अपनी मशीन में ssh'ing या telneting और उस तरह से चिपकाने की कोशिश करें। यदि आपके पास एक विंडोज बॉक्स है, तो अपने फेडोरा 25 मशीन में डालने के लिए पोटीन का उपयोग करें और उस तरह से पेस्ट करें।
जिम यू

सीधे संबंधित नहीं है, लेकिन खिड़कियों पर जीवीएम ने वर्षों से इस तरह से व्यवहार किया है। जब आप gvim स्थापित करते हैं, तो आपको दो निष्पादन योग्य, gvim.exe(चित्रमय-विम) और कमांड-लाइन मिलती है vim.exe। Gvim.exe में "itext" पेस्ट करें और आप प्राप्त करें itext। इसे vim.exe में पेस्ट करें और आप प्राप्त करेंtext
जिम यू

1
@Philippos उस तंत्र को पेस्ट किया जा सकता है । मुझे नहीं पता कि विम कैसे इसका समर्थन कर सकता है, शायद pastetoggleविकल्प?
गिल्स एसओ- बुराई को रोकना '10

जवाबों:


12

खैर बहुत सारे वेब पेजों के माध्यम से जाने के बाद, बहुत से कुछ संकेत देते हैं जो काम नहीं करते थे, मुझे एक संकेत (एक पेस्ट के चारों ओर अतिरिक्त पाठ) मिला जो मुझे कारण और समस्या के समाधान की ओर ले जाता है।

ऐसा लगता है कि विम ने इसे कई 'फर्जी' टर्मकैप प्रविष्टियों के रूप में बनाया है, जो इसे तब इस्तेमाल करता है जब यह विशिष्ट टर्मिनलों को पहचानता है (और कभी-कभी गलत हो जाता है, हालांकि यह इस मामले में गलत नहीं था)।

वीआईएम में टर्मकैप सेटिंग्स ऐसे हैं जो एक सामान्य "": सेट अप "सभी सूची सेटिंग को नहीं दिखाते हैं। उन्हें देखने के लिए आपको "सेट अप" का उपयोग करने की आवश्यकता है। विशिष्ट 'गैर-मानक' टर्मकैप सेटिंग "t_BE" (vim देखें): मदद t_BE "है। अंतर्निहित मदद "xterm-ब्रैकेटेड-पेस्ट" इस आंतरिक-टू-विम टर्मकैप सेटिंग की व्याख्या करता है।

मूल रूप से यदि यह सेटिंग परिभाषित की गई है (इस मामले में विम द्वारा इसे समाप्त नहीं किया गया है / टर्मोफ़) तो vim इसे शुरू होने पर xterm को भेज देगा, जो किसी भी पाठ के चारों ओर विशेष कोड जोड़ने के लिए xterm को बताता है कि उपयोगकर्ता किसी बाहरी स्रोत से चिपकाता है। जब विम इसे देखता है तो यह न केवल इन्सर्ट-मोड में चला जाता है, बल्कि 'पेस्ट-मोड' भी सेट करता है ताकि टेक्स्ट को फॉर्मेट न किया जा सके।

बाद में (पेस्ट-मोड) मुझे लगता है कि बहुत उपयोगी है! पूर्व वह है जो मुझे सारी परेशानी दे रहा है।

ब्रूट बल समाधान को ".vimrc" में जोड़कर ब्रैकेट-पेस्ट अक्षम किया गया है

:set t_BE=

एक वैकल्पिक समाधान…।

ब्रैकेटेड-पेस्ट को पूरी तरह से अक्षम करने के बजाय, जब टर्मिनल या माउस से शुरू होता है, तो कमांड या नॉर्मल-मोड में, जब वह टर्मिनल पेस्ट का शुरुआती क्रम देखता है, तो कार्रवाई करना बंद कर दें।

:nmap <PasteStart>  <NOP>
:nmap <PasteEnd>    <NOP>
:cmap <PasteStart>  <NOP>
:cmap <PasteEnd>    <NOP>

इसका उपयोग करने का अर्थ है कि यदि आप सम्मिलित-मोड में पाठ पेस्ट करते हैं तो विम पाठ (इंडेंट) पाठ को प्रारूपित करने की कोशिश नहीं करेगा जो पहले से ही इंडेंट होने की तुलना में अधिक है।

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

समाधान पर टिप्पणियाँ और सुझाव का स्वागत है।


यह सिग्विन Vm में भी काम करता प्रतीत होता है, लेकिन दुख की बात वी.एस. विम में समस्या का समाधान नहीं है
जेम्स रॉबिन्सन

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