vi/vim

2011-02-06 8 views
47

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

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

+0

यदि आपको इसे कई बार दोहराना है: https://superuser.com/questions/429917/repeat-last-normal-mode-command-including-moves-in-vim – toliveira

उत्तर

65

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

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

+0

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

+0

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

+1

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

34

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

Ctrl+f, Ctrl+b पृष्ठ आगे और पीछे।

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

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

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

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

+0

पेज ऊपर और नीचे जो मैंने खोजा था उसे पूरा किया! – jeremyjjbrown

+0

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

+0

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

8

मैं vim साथ खिलवाड़ किया गया था और मैं नीचे - चाल आप ऊपर और + चाल क्या आपने देखा है, तो आप कर सकते हैं

10- 

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

+1

आगे बढ़ने के लिए, 'एंटर' एक संख्या के बाद '+' जैसा ही काम करता है, और अधिकांश समय तक पहुंचने में आसान होता है – SnoringFrog

+0

@SnoringFrog हाँ, लेकिन यह बस इतना है कि ऊपर और नीचे कुछ रिश्ते हो सकते हैं; मेरा मतलब यह नहीं है कि किसी के लिए वास्तव में इस तरह ऊपर और नीचे जाना है, क्योंकि एचजेकेएल वैसे भी सबसे तेज़ होगा। – Cilan