vim कट और पेस्ट स्ट्रेच / डेबियन 9 में काम नहीं कर रहा है


33

डेबियन 9 के लिए कुछ वीएम सर्वर यहां अपग्रेड किए गए हैं।

अब उपयोग करते समय ssh, हम दूरस्थ टर्मिनलों के बीच कॉपी और पेस्ट नहीं कर सकते हैं।

कर्सर आंदोलनों को करता हुआ प्रतीत होता है, और टेक्स्ट को चिन्हित करता है, सामान्य से भिन्न / अलग तरीके से, लेकिन कमांड-सी / कमांड-वी करते समय क्लिपबोर्ड में कुछ भी कॉपी नहीं किया जाता है या संबंधित मेनू में कॉपी और पेस्ट नहीं किया जाता है ।

हमने पॉजिटिव परिणामों के बिना, Shift और अन्य कीबोर्ड संयोजनों के साथ माउस का मूवमेंट करने की भी कोशिश की।

यह ओएस / एक्स में हो रहा है, अर्थात् सिएरा और एल कैपिटान, और विंडोज में, मोबाइल एक्सटर्म टर्मिनलों का उपयोग करके भी।

स्थिति माउस के होने की जागरूकता के कारण है।

स्टैक ओवरफ्लो में अन्य प्रश्नों के बाद, मैंने /etc/vim/vimrc.localसाथ बनाया set mouse="r"और set mouse="v; यह अच्छी तरह से काम नहीं किया।

अंत set mouse=""में एक ही फाइल में सेटअप करें , कुछ मध्यम सफलता के साथ।

हालांकि, यह 100% समय भी अच्छी तरह से काम नहीं करता है। और क्या किया जा सकता है?


आप माउस का समर्थन बंद क्यों करना चाहेंगे? विंडोज पर मैं एक पुट्टी सेशन में सिर्फ फाइन कॉपी और पेस्ट कर सकता हूं; मैक पर आप किस टर्मिनल एमुलेटर का उपयोग कर रहे हैं?
एलेक्सज मगुरा

3
नियमित टर्मिनल + ssh बाइनरी जो डिफ़ॉल्ट रूप से आता है; 2 और काम करने वाले साथी शिकायत करते हैं ... वे हेडलेस वर्चुअल सर्वर हैं, उन सभी में केवल टेक्स्ट मोड है। ठीक से काम न करना और पेस्ट करना हमारे लिए बहुत बड़ी बात है।
रुई एफ रिबेरो

मैं iTerm2 जैसी किसी चीज़ का उपयोग करने की सलाह दूंगा , मुझे लगता है कि केवल एक ही टर्मिनल एमुलेटर है जिसका उपयोग मैंने रेट्रो टर्म के अलावा किया था, जिसे आप Apple स्टोर में प्राप्त कर सकते हैं, लेकिन मुझे याद नहीं है कि एक समर्थित कॉपी और ssh पर पेस्ट हो। आप अभी भी स्क्रीन चयनों को कॉपी करने में सक्षम होना चाहिए, हालांकि। हालाँकि, मुझे टर्मिनल से सिस्टम में बकवास कॉपी करने की कोशिश करते समय होने वाली समस्याओं को याद है, मैंने इसे सुविधाजनक बनाने में मदद करने के लिए अपने .zshrc में कार्यों का एक गुच्छा लिखा है, लेकिन मुझे यकीन नहीं है कि अगर आप वास्तव में देख रहे हैं तो के लिये।
एलेक्सज मगुरा

2
हो सकता है कि कोई व्यक्ति इस परिवर्तन को वापस करने के लिए (डेबियन में?) mouse=मोड वापस पाने के लिए अनुरोध कर सकता है।
स्टेफेन

जवाबों:


37

समाधान वास्तव में है, विकल्प की स्थापना mouse=aकरना mouse=r

/usr/share/vim/vim80/defaults.vimस्वीकार किए गए उत्तर के अनुसार इसे सेट करने में समस्या यह है कि यह हर अद्यतन पर ओवरराइट किया जाएगा। मैंने एक लंबा समय खोजा और इस पर समाप्त हुआ: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

पहले तरीके से समाधान स्थानीय .vmrc फ़ाइलों का उपयोग करना है और इसे वहां सेट करना है। इसलिए आप ~/.vimrcप्रत्येक उपयोगकर्ता के लिए एक स्थानीय .vimrc ( ) बना सकते हैं और वहां अपने विकल्प सेट कर सकते हैं। या एक बनाएं /etc/skelजिससे यह आपके द्वारा बनाए गए प्रत्येक नए उपयोगकर्ता के लिए स्वचालित रूप से बन जाएगा।

लेकिन जब आप स्थानीय .vmrc फ़ाइलों का उपयोग करते हैं, तो आपको वहां सभी विकल्प सेट करने होते हैं, क्योंकि यदि कोई स्थानीय है .vimrc, तो defaults.vimवह बिल्कुल लोड नहीं होता है! और अगर कोई स्थानीय नहीं है तो .vimrcआपकी सभी सेटिंग्स को ओवरराइट कर दिया जाता है defaults.vim

मैं सभी उपयोगकर्ताओं के लिए एक वैश्विक कॉन्फ़िगरेशन चाहता था, जो डिफ़ॉल्ट विकल्पों को लोड करता है और फिर मेरी व्यक्तिगत सेटिंग्स के साथ चूक को जोड़ता या अधिलेखित करता है। सौभाग्य से डेबियन में इसके लिए एक विकल्प है: के /etc/vim/vimrc.localबाद लोड किया जाएगा /etc/vim/vimrc। इसलिए आप इस फाइल को बना सकते हैं और डिफॉल्ट्स को लोड होने दे सकते हैं, उन्हें फिर से लोड होने से रोक सकते हैं (अंत में) और फिर अपने व्यक्तिगत विकल्प जोड़ें:

कृपया निम्न फ़ाइल बनाएँ: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(ध्यान दें कि $VIMRUNTIMEउपरोक्त स्निपेट में प्रयुक्त मूल्य का मान है /usr/share/vim/vim80/defaults.vim।)

यदि आप "पुरानी कॉपी / पेस्ट व्यवहार" को सक्षम करना चाहते हैं, तो उस फ़ाइल के अंत में निम्न पंक्तियाँ भी जोड़ें:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

4
यह स्वीकृत उत्तर होना चाहिए। साथ ही आपकी लिंक्ड बग रिपोर्ट से मुझे लगता है कि हम इससे दूर हो सकते हैं source $VIMRUNTIME/defaults.vim
अलास्दैर

1
अंत में इस, शानदार, महान काम को तैनात करने में कामयाब रहे! +1
रुई एफ रिबेरो

2
अभी भी डेबियन 10 में काम कर रहे हैं, बस स्रोत /usr/share/vim/vim81/defaults.vim का उपयोग कर
रुई एफ रिबेरो

26

माउस जागरूकता से विम को काटने का एक तरीका माउस के बारे में कॉन्फ़िगरेशन को कमेंट करना प्रतीत होता है।

में /usr/share/vim/vim80/defaults.vimमाउस के विशिष्ट पता लगाने के रूप में टिप्पणी की:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(उन vim विन्यास फाइल में, "एक टिप्पणी शुरू कर रहा है")।

परिवर्तन ने हमें बिना किसी समस्या के फिर से कॉपी और पेस्ट करने की अनुमति दी है।

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


2
IMO यह एक बुरा जवाब है! पैकेज प्रबंधन द्वारा संभाला गया फ़ाइल संपादित करने के लिए उपयोगकर्ताओं को प्रोत्साहित करने से भविष्य में अप्रत्याशित रूप से चीजों के टूटने की संभावना है। @ I-GaLaXy-I उत्तर बेहतर है।
जेरेमी डेविस

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

11

के लिए विम प्रलेखन mouseविकल्प कहते हैं

माउस बटन के xterm हैंडलिंग को अभी भी शिफ्ट की को दबाकर रखा जा सकता है।


उसके लिए धन्यवाद। मैं वर्षों से विम का उपयोग कर रहा हूं और उस सुविधा के बारे में नहीं जानता था। मैंने आपके प्रश्न को उपलब्ध स्वरूपण सुविधाओं में और शामिल करने के लिए संपादित किया है। यूनिक्स और लिनक्स में आपका स्वागत है !
एंथनी जी -

1
समस्या यह है कि मैं मैक में टर्मिनल का उपयोग कर रहा हूं और मेरे ऑपरेटर विंडोज में पोटीन / मोबाइल एक्सट्रीम ... नहीं xterm
रुई एफ रिबेरो

3

आप /etc/vimrc.localनिम्न को बनाकर और सम्मिलित करके सिस्टम फ़ाइलों को परिवर्तित किए बिना इसे अक्षम कर सकते हैं :

set mouse=

बीटा समय में, यह लगातार काम नहीं करता था, इसे फिर से जाँच करेगा, धन्यवाद।
रुई एफ रिबेरो

2
यह काम नहीं करता।
लेटवॉर्फ

ऊपर I-GaLaXy-I का उत्तर देखें। आपको स्पष्ट रूप से डिफॉल्ट्स .vim आयात करने और इसे आयात होने से रोकने की आवश्यकता है।
रिचर्ड

यह मेरे लिए भी ठीक काम करता है, हालांकि मैंने इसे @ I-GaLaXy-I के उत्तर के साथ जोड़ दिया (यानी संपादित / बनाया /etc/vim/vimrc.local)
जेरेमी डेविस

डेबियन 9 कंटेनर के अंदर रहते हुए मेरे लिए ठीक काम किया ... बस इसे ~ / .vimrc में डाल दिया
स्कॉट स्टेंसलैंड

1

कई लोगों ने सुझाव दिया :set mouse=aलेकिन मैंने पाया कि केवल :set mouse=rडेबियन 9. विम पर कॉपी और पेस्ट को सक्षम बनाता है। शुभकामनाएँ!

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