VIM सुपर फास्ट नेविगेशन


91

केवल एक चीज जो मुझे अन्य संपादकों का उपयोग करने के बारे में याद आती है, वह माउस के साथ मेरी जगह पा रही है। मैं अपनी आंखों के साथ फाइल पर एक विशिष्ट क्षेत्र और माउस की एक गति और एक क्लिक के साथ देख सकता हूं। VIM के साथ मुझे jjjjjkkkkkkjjjhhhh करना है ... लगभग hhhhh ओह बकवास मैं 3 वर्णों से चूक गया, lll।

मैं अंक बनाना सीख रहा हूं और मुझे एक बुकमार्क प्लगइन मिला, जो बहुत अच्छा है, मैं मार्कर बना सकता हूं और उन्हें नष्ट कर सकता हूं <f3>और दुर्भाग्य से उन निशानों के साथ नेविगेट कर सकता हूं जब फ़ाइल बंद हो जाती है।

आप सभी सुपर नेविगेट फ़ाइलों को कैसे करते हैं? मुझे पता है कि मैं 5j7k4j5h और आगे भी कर सकता हूं, लेकिन एक प्लगइन होना चाहिए जो मेरी आंखों को पढ़ सके और कर्सर को वहां रख सके जहां मुझे वास्तव में इसकी आवश्यकता है ..

मैंने एक विशिष्ट शब्द की खोज के लिए /% का उपयोग करना भी सीखा है। यह मदद करता है लेकिन सभी मिलान पात्रों को दस्तावेज़ के माध्यम से हाइलाइट किया जाता है।


सभी के महान जवाब, जबकि हम अभी भी इस विषय पर हैं कि मुझे लगा कि मैं nG (लाइन नंबर पर जाएँ) f% जैसी किसी चीज़ के साथ प्रयोग कर सकता हूँ (जो मैं देख रहा हूँ, उसका पहला चरित्र ढूंढें या जैसा कि किसी ने सुझाव दिया है कि आगे बढ़ने के लिए डब्ल्यू का उपयोग करें। अगले शब्द के लिए।
हेल्मुट ग्राण्ड

जवाबों:


173

कोशिश करो $ vimtutor, यह आपको वह सब कुछ सिखाएगा जो आपको शुरू करने के लिए जानना आवश्यक है।

hjkl हिमशैल के शीर्ष की नोक और बहुत कम ही उपयोग किया जाता है, कम से कम मेरे मामले में।

wWEeऔर BbgegEसभी शब्द द्वारा शब्द को स्थानांतरित करने की अनुमति देते हैं:

  • wऔर eआगे बढ़ें, Wऔर Eव्हाट्सएप और विराम चिह्न को ध्यान में रखें

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
  • bऔर geपीछे जाएं, Bऔर gEव्हाट्सएप और विराम चिह्न को ध्यान में रखें

    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    

fFtTवर्तमान लाइन पर किसी विशेष वर्ण तक पहुंचने के लिए उपयोग किया जाता है और ;,उस गति को दोहराने के लिए, उसी दिशा ;में और इसके विपरीत दिशा में उपयोग किया जाता है ,:

  • fmअगले mआगे कूदता है , Fपिछड़ जाता है

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
  • tmअगले mआगे कूदता है , Tपिछड़ जाता है

    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    

/? वर्तमान कर्सर स्थिति से एक पैटर्न की पहली घटना पर कूदने के लिए उपयोग किया जाता है:

  • /pattern आगे बढ़ता है

    Latin: Lorem ipsum dolor sit amet.
    *            /ips
    
  • ?pattern पिछड़ जाता है

    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    

0$ लाइन के पहले और अंतिम वर्ण पर जाने के लिए उपयोग किया जाता है।

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $

^g_ लाइन के पहले और अंतिम प्रिंट करने योग्य चरित्र के लिए कूदने के लिए उपयोग किया जाता है।

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_

()[]{}कोड ब्लॉक द्वारा वाक्यांश या पैराग्राफ द्वारा वाक्यांश को स्थानांतरित करने के लिए एकल और संयुक्त का उपयोग किया जाता है।

<C-b>और <C-f>स्क्रीन के पीछे और आगे स्क्रॉल करने के लिए उपयोग किया जाता है।

<C-u>और <C-d>आधे स्क्रीन को आगे और पीछे स्क्रॉल करने के लिए उपयोग किया जाता है।

H, Mऔर Lक्रमशः व्यूपोर्ट के ऊपर, मध्य, नीचे कर्सर ले जाएँ।

zt, zzऔर zbक्रमशः व्यूपोर्ट के ऊपरी, मध्य, निचले हिस्से में कर्सर के नीचे लाइन ले जाएँ।

और इसी तरह।

:help motion.txt आपके दिमाग को उड़ा देगा।


17
मैं आमतौर पर ऐसा नहीं करता, लेकिन यह टिप्पणी सिर्फ आपको यह बताने के लिए है कि यह एक महान जवाब है!
जोजो

किसी कारण से, मैंने पहले कभी एच, एम, या एल का उपयोग नहीं किया था, महान युक्तियाँ!
क्रिस

उस ]}और [{(2 कीस्ट्रोक्स) को जोड़ना एक दायरे के अंत या शुरुआत में कूदता है (उदाहरण के लिए{ ... }
मैथ्यू वू

3
खैर, यह अभी भी वास्तव में ओपी के सवाल का जवाब नहीं देता है how to jump to a line he's seeing like using a mouse। मैं उन सभी प्रमुख बाइंडिंग को जानता हूं और उनका उपयोग करता हूं जिनका आपने हर समय उल्लेख किया है। लेकिन यह तब भी उतना कुशल नहीं है जितना कि बड़ी दूरी तय करने पर माउस को इंगित करना।
पेंघे गेंग

हाँ एच, एम, एल आसान हैं: उच्च, मध्य, निम्न;) @ क्रिस
नील पीटरसन

25

विम के मोशन कमांड के अलावा, मुझे लगता है कि EasyMotion नाम का vim प्लगइन नेविगेट करने के लिए बहुत उपयोगी है, अगर आप vimperator या pentadactyl से परिचित हैं, तो EasyMotion सिर्फ संकेत मोड को vim में वापस लाता है। यहाँ एक एनिमेटेड डेमो है और यहाँ वीडियो ट्यूटोरियल है। आशा है कि यह आपके लिए उपयोगी है।


सहजता का लाभ यह है कि आप स्क्रीन पर कहीं भी केवल 3 कीस्ट्रोक्स के साथ जा सकते हैं।
ज़ेवियर टी।

+1: इज़ीमोशन वास्तव में विम के आंदोलन का एक जेटपैक है। (वैसे, PreciseJump भी। दरअसल, EasyMotion, PreciseJump का एक बेटा है)
दिमित्री फ्रैंक

2
ईज़ीमोशन के लेखक को डेमो में यह सुपर भयानक स्थिति रेखा कैसे मिली?
साइरिल

1
'सुपर कमाल स्टेटस लाइन' एक प्लगइन है जिसे 'पावरलाइन' कहा जाता है। यहाँ: vim.org/scripts/script.php?script_id=3881
DEzra

क्या आप कृपया एनिमेटेड डेमो यूआरएल को अपडेट कर सकते हैं? यह अब काम नहीं कर रहा है
बोरालियोबो

20

Vim में घूमने के लिए एक zillion तरीके हैं, यह वास्तव में मजबूत क्षेत्रों में से एक है। मैं उपयोग करता हूं {और }बहुत कुछ, जो उस दिशा में अगली रिक्त रेखा तक ऊपर और नीचे जाता है। %मिलान ब्रैकेट (किसी भी प्रकार का) के लिए आगे और पीछे जाने के लिए उपयोगी है। Wऔर B"शब्द" द्वारा आगे और पीछे चलें।

यह सार्थक हो सकता है कि विम मैनुअल के सेक्शन के चारों ओर घूमना


4
संभवतः यह भी ध्यान देने योग्य है कि क्रमशः Ctl + U और Ctl + D का उपयोग करके ऊपर-नीचे किया जा रहा है।
निक

10

vim को माउस सपोर्ट है! इसे आज़माएं (अपने .vimrc में):

set mouse=a

sidenote : एक स्क्रीन उपयोगकर्ता के रूप में, मैंने पाया है कि मुझे भी इसकी आवश्यकता है

set ttymouse=xterm2

इसके लिए काम करना है।


4
यह जानने के लिए अच्छा है, हालांकि मैं अभी भी माउस की आवश्यकता के बिना सही त्वरित नेविगेशन के लिए शिकार करना जारी रखूंगा।
हेल्मुट ग्राण्ड

9

व्यक्तिगत रूप से मैं उपयोग करना पसंद करता हूं:

"/<chars><enter>" to quickly move to somewhere   ( extremely fast! trust me! )
":<number>" to go to some line, 
"ctrl + f/b" to forward/back
"g;" to move to the last editing place.
"w/b" to move by word
"jklh" to move your cursor to the exact position

5

विकल्प के साथ relativenumber( : relativenumber - विम (.३ के साथ शामिल मदद ) आप एक [count]kया [count]jआंदोलन के साथ अपनी आंखों के नीचे की रेखा पर पहुंच सकते हैं , जिसे आप ftweb@romainl द्वारा समझाए गए आंदोलनों के साथ वर्तमान लाइन में ले जाने देते हैं।


बढ़िया विकल्प। सहजता से भी तेज।
पेंघे गेंग

5

इसके अलावा {, }, (, ), <number>cb, <number>cB, <number>cWऔर %, मैं इस तरह के नेविगेट तकनीकों का उपयोग करें:

  • ciw, diw( ciW, diW)। आदि को कर्सर के नीचे शब्द को जल्दी से संपादित / हटाने के लिए (गैर-अंतरिक्ष वर्णों सहित)
  • ci(, ci"( ca(, ca"), आदि कोष्ठक, उद्धरण (कोष्ठक, उद्धरण सहित) के अंदर जल्दी से संपादित करने के लिए। के लिए भी यही लागू होता है d
  • कैपिटल अक्षरों के साथ निशान उन्हें विश्व स्तर पर (फाइलों में) और लगातार (जब बफर बंद हो जाता है) सेट करने के लिए। उदाहरण के लिए, mAवैश्विक चिह्न बनाएगा Aजो 'Aकमांड (या `Aस्तंभ का सम्मान करने) के साथ उपलब्ध होगा ।
  • gf कर्सर के तहत फाइल करने के लिए जल्दी से जाने के लिए
  • f, t( F, T) चार को ले जाने के लिए, पहले दाएं (बाएं) ( ;दोहराने के लिए उपयोग करें)। ये विशेष रूप से dऔर cकमांड ( .दोहराने के लिए उपयोग ) के लिए उपयोगी हैं ।
  • ^]टैग पर जाने के लिए और ^Tवापस जाने के लिए।

और दूसरों को स्थानांतरित करने के लिए बहुत सारे तरीके :)

अधिक जानकारी के लिए इसे देखें: http://www.thegeekstuff.com/2009/03/8-essential-vim-editor-navigation-fundamentals/

PS रेल उपयोगकर्ताओं के लिए एक बहुत उपयोगी रेल-विम प्लगइन है, आप इसे भी देखना चाहते हैं।


3

इस एक अच्छी जगह मुख्य नेविगेशन आदेशों जानने के लिए है, vim की शक्ति / गति से कुछ कार्रवाई यानी साथ आंदोलन के संयोजन से आता है cw-> परिवर्तन शब्द, d10j-> 10 पंक्तियों को हटा दें आदि नीचे भी इस और इस दिलचस्प पढ़ता है।


2

आप :set nohlsearchअपने खोज वर्णों के मुख्य आकर्षण को बंद कर सकते हैं ।

मैं ctags का उपयोग करके बहुत अधिक नेविगेट करता हूं।


github.com/richoH/dotfiles/blob/master/vimrc आपको वहां कुछ अन्य उपयोगी चीजें मिल सकती हैं।
अमीरो

टिप के लिए धन्यवाद, मैं आपके vimrc के माध्यम से देख रहा था और मुझे आपका नोट मिला जहां आपने ईमेल या डॉक्स लिखते समय 80 अक्षरों तक पहुंचने पर लाइन को हाइलाइट करने के लिए सेट किया है। आप VIM में ईमेल क्यों लिखेंगे? मैं आपके व्यक्तिगत उपयोग के लिए एक दस्तावेज़ को समझ सकता हूं लेकिन ईमेल के बारे में निश्चित नहीं हूं।
हेलमुट ग्रांडा

मैं अपने ईमेल के विशाल बहुमत को पढ़ने और लिखने के लिए mutt + vim का उपयोग करता हूं। मैं बहुत सारे वेब कंटेंट को लिखने के लिए सभी टेक्स्ट प्लगइन का उपयोग करता हूं। मेरे पास शब्द रैपिंग ईमेल के लिए चालू है, लेकिन लिंक आदि के लिए यह एक अनुस्मारक के लिए उपयोगी हो सकता है अगर मैंने सही ढंग से प्रारूपित नहीं किया है, या यदि नेस्टेड उद्धरण बहुत लंबा हो रहा है।
रिचो

0

मैंने मन में सुपर फास्ट नेविगेशन के साथ एक प्लगइन लिखा है, इसे मूव-कम कहा जाता है:

https://github.com/anschnapp/move-less

यह आप ( h j k l-keys) के साथ स्क्रॉल करके छेद फ़ाइल आरामदायक खोज करते हैं । होल साइट (फोल्डिंग ट्रिक पर आधारित) को स्क्रॉल करते हुए आप अपना कर्सर स्थान नहीं बदलते हैं। यदि आप अपनी खोज को समाप्त कर देते हैं तो आप वहीं हैं जहाँ आपने शुरुआत की थी।

सुपर फास्ट नेविगेशन के लिए स्क्रीन पर लक्ष्य की स्थिति प्राप्त करने के लिए मेरे प्लगइन का उपयोग करने के लिए इंटेंसिटी है और फिर सहजता के माध्यम से सही स्थिति पर कूदें (जो पहले से ही किसी अन्य उत्तर से अनुशंसित था):

https://github.com/easymotion/vim-easymotion

आप गठबंधन दोनों यदि आप भी कूद-इतिहास के अग्रिम ले सकता है और आप अपने मूल और बस के माध्यम से लक्ष्य गंतव्य बीच जा सकते हैं <c-o>और <c-i>

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