एक दृश्य चयन को कीबोर्ड पर कॉपी करने के बाद, मूल स्थान पर लौटें


18

मेरा कर्सर एक पैराग्राफ के बीच में है जब मैं अचानक तय करता हूं कि मुझे उस पैराग्राफ को कॉपी करने की आवश्यकता है:

शुरू

इसलिए मैं vipपैरा नेत्रहीन का चयन करने के लिए टाइप करता हूं :

चयनित

अब मैं cmd+Cक्लिपबोर्ड पर कॉपी करने के लिए मारा (यह आपके सिस्टम पर भिन्न हो सकता है, लेकिन मेरे पोस्ट के केंद्रीय प्रश्न के लिए प्रासंगिक नहीं होना चाहिए), जो पैराग्राफ की शुरुआत में मेरे कर्सर को छोड़ देता है:

अंतिम

वांछित स्थिति के बजाय, जो कि वह वह जगह है जब मैंने शुरुआत की थी।

नोट समान समस्या तब होती है जब चयन को गैर-दृष्टिगत रूप से yanking किया जाता है yip

मैं इस तरह के चयन / प्रतिलिपि कार्रवाई करने के बाद डिफ़ॉल्ट व्यवहार को "मूल कर्सर स्थिति में वापस आना" चाहूंगा। क्या कोई कॉन्फ़िगरेशन है जो इसे संभव बनाता है?


11
हाँ, मुझे यह कष्टप्रद भी लगता है। मैं बस उस उद्देश्य के लिए चिह्नों का उपयोग करता हूं: mm "+yap `m(ध्यान दें कि "+yआपके सिस्टम क्लिपबोर्ड पर yanks)
fruglemonkey

3
मुझे यह तरीका उपयोगी लगता है कि कर्सर को या तो शुरुआत में रखा जाए, या फिर येंक्ड जोन के अंत में। आखिर, अब मैं क्या कर सकता हूँ, याँकित पाठ, और इसके अंदर कर्सर के साथ? यह अब एक पुट / पेस्ट करने के लिए बहुत मायने नहीं रखता है। लेकिन, अगर मैं बाद में ऐसा करना चाहता हूं, तो इसका मतलब है कि मैं बाद में भी हां कर सकता हूं ... हो सकता है कि अब आपको जो चाहिए वह सिर्फ एक निशान हो।
वैनसेलर

जवाबों:


14

जंप का उपयोग करने के लिए एक संभावित समाधान है:

यांकिंग या नेत्रहीन चयन से पहले आप एक नया जंप सेट कर सकते हैं जिसे आप अपने कर्सर के चले जाने के बाद एक्सेस कर पाएंगे। ऐसा करने के लिए m`

उसके बाद जब आपका कर्सर ctrloकूदने की सूची में वापस कूदने के उपयोग के कारण स्थानांतरित हो गया । इसके अलावा, आप के साथ उपलब्ध कूदता की सूची देख सकते हैं :jumpsऔर इस सूची के साथ नेविगेट कर सकते हैं ctrloऔरctrli

आपके वर्कफ़्लो का योग होगा:

  • m`
  • yip
  • ctrlo

m` चिह्न का उपयोग करते हुए , आप ``इसके बजाय इसके साथ कूद सकते हैं ctrlo

आप :h mark-motionsऔर :h :jumpsअधिक जानकारी के लिए पढ़ सकते हैं ।


यह मुझे पंसद है। क्या कूदते समय सामान्य उद्धरण में एकल उद्धरण बनाने का एक तरीका है? एकल उद्धरण टाइप करना आसान है, और आमतौर पर मैं सही कॉलम स्थिति के साथ-साथ सही लाइन पर कूदना चाहता हूं ...
जोना

1
@Jonah, मैं नक्शा <leader>'होने के लिए `है, जो बहुत अच्छी तरह से मेरे लिए काम करता है। (मैं <space>अपने नेता के रूप में उपयोग करता हूं।)
नुमरी का कहना है कि मोनिका

@ जोनाह: जैसा कि नुमेरी ने कहा कि एक मैपिंग एक अच्छा समाधान हो सकता है, अन्यथा यदि आप बैकटिक से छुटकारा पाना चाहते हैं तो आप एक नज़र डाल सकते हैं :h 'langmap'। मैं यह नहीं कह रहा कि यह आदर्श समाधान है लेकिन शायद यह आपके लिए दिलचस्प हो सकता है।
statox

@ जोहा, मैं वास्तव में सिंगल कोट और बैक टिक का उपयोग करके स्वैप करता हूं noremap ' ` noremap ` '... यह मेरे vimrc में है और बढ़िया काम करता है
Niko Bellic

10

आप कर्सर को साथ ले जाने से बच सकते हैं:

:'{,'}y

देखें :help range, :help mark-motionsऔर :help :y


1
के बारे में जानकर अच्छा लगा, लेकिन क्या आप वास्तव में ऐसा करते हैं? ऐसा लगता है कि दो कोष्ठक के साथ 8 कीस्ट्रेक्स टाइप करना, निशान समाधानों की तुलना में कठिन बनाता है
जोना

अगर मैं आपकी स्थिति में होता तो यही करता। लेकिन मेरे पास आपके द्वारा वर्णित व्यवहार के साथ कोई समस्या नहीं है इसलिए मैं वास्तव में ऐसा नहीं करता हूं।
रोमेनिल

2
@ जोनाह आपके पास अभी भी मैपिंग बनाने का विकल्प है। कुछ :nmap <key> :'{,'}y<CR>ऐसा काम करना चाहिए।
statox

10

मेरा कर्सर एक पैराग्राफ के बीच में है

यदि आपने अभी इसे संपादित किया है, तो सबसे सरल उपाय यह है g ;कि आपके कर्सर को अंतिम संपादन स्थिति पर किस प्रकार रखा जाएगा।

और यदि आपने पैराग्राफ को संपादित नहीं किया है, तो आप उसी चरित्र के साथ एक सरल रिप्लेसमेंट ऑपरेशन कर सकते हैं h, जैसे आप rhवास्तव में कुछ भी संपादित किए बिना "ईवेंट" को ट्रिगर करने के लिए उसी पर हैं (जैसे आप टाइप कर रहे हैं )।


2
+1: मैंने हमेशा उपयोग किया है '., लेकिन अंतिम परिवर्तनों के साथ नेविगेट करने के लिए यह बहुत उपयोगी हो सकता है g;और g,
mMontu

2
क्या कोई संस्करण है g;जो आपको सही कॉलम स्थिति पर भी ले जाता है?
योना

@ जोना डिफ़ॉल्ट रूप से व्यवहार है। क्या यह आपके लिए काम नहीं कर रहा है? यह मुझे हमेशा सही कॉलम और लाइन स्थिति में ले जाता है।
अल.जी.

4

Vim-easyclip प्लगइन इस के लिए एक सेटिंग है:

g:EasyClipPreserveCursorPositionAfterYank- डिफ़ॉल्ट 0 (यानी। अक्षम)। विम के डिफ़ॉल्ट व्यवहार को येंक्ड टेक्स्ट की शुरुआत में कर्सर को स्थिति देना है, जो अन्य गतियों के अनुरूप है। हालाँकि, यदि आप यैंक करते समय कर्सर की स्थिति को अपरिवर्तित रखना पसंद करते हैं, तो इस विकल्प को सक्षम करें।

इस छोटी सी सुविधा के लिए पूरे प्लगइन को स्थापित करना मेरे लिए थोड़ा बहुत है, इसलिए मैं अपनी टिप्पणी के अनुसार अंकों का उपयोग करना पसंद करता हूं।


0

Al.G. के उत्तर का विस्तार करते हुए, हम संपादन के बिना आवश्यक स्थान पर जा सकते हैं। समाधान है gi। हम उसी स्थिति में पहुंच जाएंगे, जहां हम पहले अंतिम सम्मिलित मोड में थे।

  • आप पैराग्राफ के बीच में हैं।
  • मोड डालने के लिए स्विच करें।
  • सामान्य मोड पर स्विच करें।
  • दबाओ vip
  • दबाओ gi
  • सामान्य मोड पर स्विच करें। ( giहमें मोड डालने के लिए छोड़ दिया जाएगा)

यदि हम हाइलाइट किए गए टेक्स्ट की शुरुआत या समाप्ति पर जाना चाहते हैं।

 :help v_o 

जब आप हाइलाइट किए गए टेक्स्ट को यैंक करते हैं, तो आप सामान्य मोड में भी लौट आएंगे और आप मूल कर्सर स्थिति को बनाए रख सकते हैं या नहीं भी रख सकते हैं।

  1. यदि आप उच्चतर निम्न कर्सर स्थिति (निम्न पंक्ति-स्तंभ संख्या से उच्चतर पंक्ति-स्तंभ संख्या) पर हाइलाइट करना प्रारंभ करते हैं, तो दबाने पर आप मूल कर्सर को बनाए रखेंगे y
  2. अगर कर्सर निम्न से उच्च कर्सर स्थिति में शुरू होता है तो वर्तमान स्थिति में रहेगा।

यानिंग के बाद मूल स्थान पर लौटना:
gv पिछले हाइलाइट प्राप्त करने के लिए।

अब आप कुंजी के साथ दृश्य मोड में मूल और वर्तमान स्थान के बीच स्विच कर सकते हैं
oया O

स्टेटस लाइन की लाइन और कॉलम नंबर से कर्सर की सटीक स्थिति जानने में मदद मिलेगी।
प्रलेखन:

:help visual-change

vipजब कर्सर पैराग्राफ के बीच में शुरू होता है तो यह काम नहीं करता है ।
एंटनी

ओह हाँ, मैंने इसे नोटिस नहीं किया, अब मैं इसे हटाने के बजाय अपने उत्तर को संपादित करूँगा।
10

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