Vi / vim में वर्तमान स्थिति से कर्सर x रेखाएँ ले जाएँ


80

क्या कर्सर को vi / vim में लाइनों की सापेक्ष मात्रा में स्थानांतरित करने का कोई तरीका है? मान लीजिए कि आपके पास कोड के 10 ब्लॉक हैं, जिसे आप हटाना चाहते हैं। यदि आपके पास रिश्तेदार क्रम में दिखाए गए लाइन नंबर हैं, तो "जंप 10 लाइन अप कमांड" होना अच्छा होगा जो आपको वहां ले जाएगा।

या शायद यह बेहतर है कि निरपेक्ष लाइन नंबर दिखाए जाएं और xgg करें जहां x लाइन नंबर है?


यदि आपको इसे कई बार दोहराना है: superuser.com/questions/429917/…
toliveira

जवाबों:


122

हाँ, बेशक वहाँ एक रास्ता है। jऔर kनीचे ले जाने और एक लाइन अप है, तो 10jऔर 10kनीचे ले जाने और दस लाइनें। आप इससे पहले एक संख्या डालकर किसी भी गति को दोहरा सकते हैं।

आप यह भी चाहते हो सकता है set relativenumberकि यह ऐसा कुछ है जो आप बहुत कुछ करते हैं - यह आपको पूर्ण संख्या के बजाय वर्तमान लाइन के सापेक्ष मुद्रण रेखा संख्याओं को गिनने से बचाने में मदद करेगा।


धन्यवाद! मुझे पता लगाना चाहिए था कि यह कदम चाल कमांडों पर भी लागू होगा। आपने मेरा दिन बना दिया!

1
Vim 7.4 के बाद से यह .vimrc set relativenumberऔर के साथ जोड़कर एक ही समय में सापेक्ष और निरपेक्ष दोनों संख्याओं को देखना संभव है set number। यह आपके कर्सर पर है लाइन के लिए एक निरपेक्ष रेखा संख्या के साथ रिश्तेदार लाइन नंबर देगा।
आइजैक ग्रेगसन

2
आप केवल इसके बाद की संख्या टाइप करके enter(निरपेक्ष लाइन नंबरों के लिए, बस एक कोलन के साथ इसे प्रस्तुत कर सकते हैं) नीचे कई पंक्तियों को स्थानांतरित कर सकते हैं । आप करने के लिए इस्तेमाल कर रहे हैं jऔर kऔर एक सामान्य कीबोर्ड लेआउट, वह भी मददगार नहीं हो सकता है लेकिन एक तीर का उपयोग कोलमैक उपयोगकर्ता के रूप में, enterआसान कोलमैक से तक पहुँचने के लिए है j(QWERTY yकुंजी)
SnoringFrog

49

10 लाइनों को ऊपर और नीचे ले जाना आपके कार्य के साथ-साथ अन्य विकल्पों के अनुरूप नहीं हो सकता है। अन्य आंदोलनों पर विचार करें:

Ctrlf, Ctrlbपृष्ठ आगे और पीछे।

}, {आगे बढ़ें और एक पैराग्राफ द्वारा वापस।

आप 10jएक कुंजी को बाँधने के लिए अपने vimrc में नियम लिख सकते हैं , Jअपनी vvrc फ़ाइल में निम्न पंक्ति जोड़कर 10 पंक्तियों को नीचे ले जाने के लिए कह सकते हैं: map <S-j> 10j

हालाँकि आप उपयोगी मौजूदा Jकमांड (दो पंक्तियों में शामिल) को ओवरराइट कर रहे होंगे । एक अच्छी तरह से तैनात अप्रयुक्त कुंजी संयोजन को खोजने के लिए 10j/ 10kमुश्किल हो सकता है, तो मैं मौजूदा आंदोलनों कि मैं उल्लेख उपयोग करने का सुझाव।

आप यह भी जानना चाह सकते हैं कि आप एक शब्द को पीछे की ओर ले जा सकते हैं, जिसे आप करते हुए देखते हैं: ?somewordऔर एक ऐसे शब्द के लिए जिसे आप करते हुए देखते हैं /someword। ये 10 लाइनों को ऊपर / नीचे ले जाने और फिर अपने कर्सर को सटीक स्थान पर भेजने की कोशिश करने की तुलना में तेज़ होने जा रहे हैं। यदि आप प्रश्न में पंक्ति के लिए एक सरल खोज स्ट्रिंग के बारे में नहीं सोचते हैं, तो आप हमेशा पंक्ति संख्या में जा सकते हैं जैसा आपने कहा था ( xgg)।


पेज ऊपर और नीचे पूरा मैं क्या देख रहा था!
jeremyjjbrown 16

1
मैं हर समय ctrl-f और ctrl-b का उपयोग करता हूं, लेकिन {,} को अनदेखा कर दिया जाता है, जो शायद संपादन कोड के लिए सबसे अच्छा ग्रैन्युलैरिटी हैं! धन्यवाद!
थॉमसन कॉमेर

यह जानना कि कितनी लाइनों को स्थानांतरित करने की आवश्यकता है, असंभव के करीब है। {और} मेरे पसंदीदा विकल्प हैं।
Andrejs

12

मैं विम के साथ खिलवाड़ कर रहा था और मैंने देखा कि -आप ऊपर जाते हैं और +आपको नीचे ले जाते हैं, इसलिए आप कर सकते हैं:

10-

या आप इस्तेमाल कर सकते हैं kके बाद से आप सबसे अधिक संभावना करने के लिए इस्तेमाल कर रहे हैं hjk lकर्सर आंदोलन।


3
आगे की ओर बढ़ने के लिए, एक नंबर के बाद enterसमान काम करता है +, और अधिकतर समय तक पहुंचना आसान होता है
SnoringFrog

@SnoringFrog हाँ, लेकिन यह सिर्फ इतना है कि ऊपर और नीचे के बीच कुछ संबंध हो सकता है; मैं किसी के लिए वास्तव में इस तरह से ऊपर और नीचे जाने का मतलब नहीं है, क्योंकि hjkl वैसे भी सबसे तेज़ होगा।
१२:०५ पर सिलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.