मैं विम में लाइन के अंत में कैसे जाऊं?


1192

मुझे पता है कि आम तौर पर कमांड मोड में कैसे घूमते हैं, विशेष रूप से, लाइनों के लिए कूद, आदि। लेकिन उस लाइन के अंत में कूदने के लिए कमांड क्या है जो मैं वर्तमान में हूं?


19
10 मिनट से भी कम समय में बेसिक vim कमांड्स youtube.com/watch?v=71YTkxUNwmg
eomeroff

14
विमटॉर के माध्यम से चलने वाले कुछ मिनट खर्च करने में क्या गलत है? यह पहले से ही आपके विम इंस्टॉलेशन का एक हिस्सा है और आपको मूल बातें दिखाता है।
डैश-टॉम-बैंग

@ डैश-टॉम-बैंग वैसे तो उन्हें यहाँ काफी उच्च स्कोर मिला ... :) लेकिन हाँ आप सही कह रहे हैं vimtutorमहान है। शायद वे इसके बारे में नहीं जानते थे?
प्रातः

जवाबों:


2049

बस $ (डॉलर का चिह्न) कुंजी। आप Aपंक्ति के अंत में जाने और संपादन मोड (ऐपेंड) पर स्विच करने के लिए उपयोग कर सकते हैं । अंतिम गैर-रिक्त वर्ण को कूदने के लिए, आप gतब _कुंजी दबा सकते हैं ।

के विपरीत Aहै I(एक पंक्ति के प्रारंभ में मोड डालें), एक तरफ। सिर्फ दबाने से ^आपके कर्सर को लाइन के पहले नॉन-व्हाइट-स्पेस कैरेक्टर में रखा जाएगा।


81
अंतिम गैर रिक्त पर g_
कूदें

2
कभी-कभी अधिक उपयोगी g_भिन्नता होती है क्योंकि इसमें रिक्त वर्ण शामिल नहीं होते हैं
रोर्गैम्पोस

6
दृश्य मोड में काम करते समय _g संस्करण वास्तव में उपयोगी है, क्योंकि यह आपको बिना किसी नई रेखा के अंत में लाइन का उपयोग करने की अनुमति देता है।
ग्रेग रॉबिंस

2
जब आप होम और एंड कीज़ एक नियमित कीबोर्ड पर काम करते हैं, तो आपको लैपटॉप का उपयोग करते समय $ और ^ की आवश्यकता होती है :)
श्रीधर सरनोबत

आपको सूची में ^ जोड़ना चाहिए।
Tek

303

जैसा कि बहुत से लोगों ने कहा है:

  • $ आपको लाइन के अंत तक ले जाता है

लेकिन:

  • ^या _आपको लाइन में पहले गैर-व्हाट्सएप चरित्र में ले जाता है, और
  • 0(शून्य) आपको लाइन झुकाव की शुरुआत में ले जाता है। खाली स्थान के

मुझे पता था | हमें लाइन की शुरुआत में ले जाता है लेकिन मुझे 0. के बारे में पता नहीं था बिल्कुल वही काम करते हैं, हाँ?
कामरान बिग्रेड

8
@kami: वर्णन अलग-अलग होने के बावजूद वे पहचान के लिए व्यवहार करते हैं। हालाँकि पाइप |कमांड एक गिनती ले सकता है, उदाहरण 3 | तीसरे कॉलम में जाने के लिए।
पॉल रूआन

136
  • $ लाइन पर अंतिम वर्ण में जाता है।
  • g _ अंतिम गैर-व्हाट्सएप चरित्र पर जाता है।

  • g $ स्क्रीन लाइन के अंत में जाता है (जब एक बफर लाइन कई स्क्रीन लाइनों में लिपटी होती है)


मुझे ऐसा लगता है कि g_ $ b के समान है
डेव आरोन स्मिथ

3
@DaveAaronSmith: bपिछले शब्द की शुरुआत में जाता है जो एक ही बात नहीं है। यह लगभग बराबर है $ge
पॉल रूआन

9
मैं का उपयोग करें _और g_के लिए दृश्य / yanking, के रूप में $भी कॉपी कर देंगे / नई लाइन (एल.एन.) चरित्र को हटा दें।
अर्नेस्ट

मेरे लिए, $ वर्तमान स्क्रीन लाइन के अंत में जाता है (जब लिपटे हुए)। मैं यह पता लगाने में कामयाब क्यों नहीं हुआ। g_एक ही रास्ता है जो मुझे लाइन के वास्तविक छोर पर जाने के लिए मिला।
इज़ुक

@ezuk $मेरे लिए लपेटे जाने पर भी रेखा के अंत तक जाता है। मुझे इसके व्यवहार को समायोजित करने के लिए कोई सेटिंग नहीं है। शायद यह आपके .vimrc द्वारा रीमैप किया गया है g$?
पॉल रूएन

66

मुख्य सवाल - लाइन का अंत

$ लाइन के अंत में जाता है, कमांड मोड में रहता है

A लाइन के अंत में जाता है, मोड डालने के लिए स्विच करता है

इसके विपरीत - लाइन की शुरुआत (तकनीकी रूप से पहला गैर-व्हाट्सएप चरित्र)

^ लाइन के प्रारंभ में जाता है, कमांड मोड में रहता है

I (अपरकेस i) लाइन के प्रारंभ में जाता है, मोड डालने के लिए स्विच करता है

इसके अलावा - लाइन की (तकनीकी रूप से प्रभावित हुए बिना पहले कॉलम शुरू खाली स्थान के )

0 (शून्य) लाइन की शुरुआत में जाता है, कमांड मोड में रहता है

0i (शून्य लोअरकेस आई के बाद) लाइन के प्रारंभ में जाता है, मोड डालने के लिए स्विच करता है

Vi सीखने के लिए शुरू करने वालों के लिए, यहाँ एक अच्छा परिचय है vi द्वारा साइड विआयर्ड्स को विशिष्ट विंडोज जीयूआई एडिटर कर्सर मूवमेंट और शॉर्टकट कुंजियों पर सूचीबद्ध करके।

विंडोज उपयोगकर्ताओं के लिए vi संपादक


3
के अनुरूप Iनहीं है , 0लेकिन ^दोनों के रूप में Iऔर लाइन ^के पहले गैर-व्हाट्सएप चरित्र पर जाएं, लेकिन 0कॉलम शून्य पर जाता है (जैसा कि इसके नाम का अर्थ है)।
wchargin

@ सच्चा सच, मैंने सोचा कि मैं यह नहीं जान सकता कि इसका एनालॉग क्या 0होगा? (लाइन के पहले पात्र (= कॉलम 0) पर जाएं और इन्सर्ट मोड में जाएँ)
franssu

@franssu: केवल एक ही जो मुझे पता है 0i। :-)
wchargin

@wchargin - तकनीकी शुद्धता के लिए धन्यवाद। मैंने पोस्ट अपडेट कर दी है।
एपी-ओएसडी

42

अपने मौजूदा लाइन अगली पंक्ति पर दृश्य स्क्रीन इर्द-गिर्द घूमती हैं, तो आप उपयोग कर सकते हैं छ $ के अंत को पाने के लिए स्क्रीन लाइन।


3
मैंने अभी-अभी पूर्व-लंबित आदेशों की खोज की है, जिसमें g- vim के साथ कर्सर स्क्रीन-आधारित हैं, बजाय लाइन-आधारित। यानी gj और gk आपको लंबी लाइन में ऊपर और नीचे जाने की अनुमति देते हैं। वास्तव में उपयोगी।
१५'१२ को १

1
यह भी पता चला कि टाइपिंग गॉ और कुछ इस तरह से व्यवहार करने के लिए जम्मू और कश्मीर को स्थायी रूप से बदलता है । यकीन नहीं होता कि कैसे या क्यों। क्या कोई इसे समझा सकता है?
Druckles

4
@Druckles: एक एक देर से उत्तर के सा है, लेकिन अगर आप अभी भी सोच रहे हैं, (या अगर किसी और पढ़ने यह है) gwऔर gqपुनः स्वरूपित पाठ कर रहे हैं वे आदेश दिए गए। (देखें :h gwऔर :h gq) संभवत: आप क्या कर रहे थे gw{motion}और कुछ पाठ को बदल दिया ताकि स्क्रीन लाइनों वास्तविक लाइनों के अनुरूप हो।
पंडुबियर


13

कई मामलों में, जब हम एक स्ट्रिंग के अंदर होते हैं तो हम एक दोहरे उद्धरण द्वारा संलग्न होते हैं, या एक बयान लिखते समय हम बचना नहीं चाहते हैं और तीर कुंजी के साथ उस पंक्ति के अंत में जाएं और अर्धविराम ( ;) को समाप्त करने के लिए दबाएं रेखा। अपनी vimrc फ़ाइल के अंदर निम्न पंक्ति लिखें :

imap <C-l> <Esc>$a

रेखा क्या कहती है? यह Ctrl + l को आदेशों की एक श्रृंखला में मैप करता है। यह आपके लिए एक साथ दबाने Esc(कमांड मोड), $(लाइन के अंत), a(एपेंड) के बराबर है ।


उस एक के लिए धन्यवाद। मैं Ctrl-ए वापस मेरी vim को जाने के रूप में पंक्ति के अंत में की तरह मेरी पहली मशीन और फ्लॉप पता है पर कैसे जोड़ने के लिए इच्छुक दिया है
tristanbailey

1
जैसा कि स्वीकृत उत्तर कहता है, आप ए को एक ही काम करने के लिए दबा सकते हैं।
trysis

4
@trysis आपने गलत समझा, यह संपादन मोड से दूर नहीं जाता है जो काफी अच्छा है।
मारकोनी

2
आप सही हे। vimनिश्चित रूप से आप इस तरह की चीजों के साथ बहुत कम समय में बहुत कुछ करने की अनुमति देता है। @razorxpress, एक मामूली समायोजन होगा imap <C-l> <Esc>A, जो Ctrl + l को दबाने Esc(एक्जिट इंसर्ट मोड) के बराबर बनाता है , फिर A(पंक्ति के अंत में संलग्न)।
trysis

3
मुझे लगता है कि इस मैप करने के लिए और अधिक मुहावरेदार तरीका होगाinoremap <C-l> <C-o>A
bennyty

12

'एंड' कुंजी का लाभ यह सामान्य और सम्मिलित दोनों मोड में काम करता है।

'$' केवल सामान्य / कमांड मोड में काम करता है, लेकिन यह क्लासिक vi संपादक में भी काम करता है (यह जानने के लिए अच्छा है कि जब विम उपलब्ध नहीं है)।


38
क्या आप के लिए डालने मोड के आसपास लटका हुआ है?! कोई भी सामान्य सभ्य नागरिक दिन के उजाले के बाद वहां नहीं जाता है। तुम्हें पता है कि वहाँ क्या होता है, क्या नहीं? कोड वहाँ गायब हो जाता है, y'know? यह गायब हो जाता है, और फिर से कभी नहीं सुना जाता है।
रुके

3
इसके लिए धन्यवाद, क्योंकि मैंने इसे दर्ज करने के बाद इन्सर्ट मोड में रहना पसंद किया। दुर्भाग्य से मेरे लैपटॉप में एंड की नहीं है। :(
रे

12

लाइन (या शायद भौतिक रेखा) और स्क्रीन लाइन के बीच अंतर पर भी ध्यान दें । एक पंक्ति को पंक्ति वर्ण के अंत ("\ n") द्वारा समाप्त किया जाता है। एक स्क्रीन लाइन जो कुछ भी होता है उसे आपके टर्मिनल या स्क्रीन में वर्णों की एक पंक्ति के रूप में दिखाया जाता है। यदि आपके पास स्क्रीन की चौड़ाई से अधिक लंबी भौतिक रेखाएं हैं, तो दोनों अलग आती हैं, जो ईमेल लिखते समय बहुत सामान्य होती हैं।

अंत के रूप में अच्छी तरह से लाइन कमांड में भेद दिखाता है।

  • $और 0क्रमशः भौतिक रेखा या पैराग्राफ के अंत या शुरुआत की ओर बढ़ते हैं:
  • g$और g0क्रमशः स्क्रीन लाइन या पैराग्राफ के अंत या शुरुआत पर जाएं।

यदि आप हमेशा बाद वाले व्यवहार को पसंद करते हैं, तो आप इस तरह से चाबियों को निकाल सकते हैं:

:noremap 0 g0
:noremap $ g$

1
लाइन के अंतिम गैर-व्हाट्सएप पर कैसे जाएं? (क्या यह एक स्क्रीन लाइन या भौतिक रेखा है)
कामरान बिगडेल

g_भौतिक रेखा का अंतिम गैर-व्हाट्सएप है । स्क्रीन लाइन के बारे में कैसे?
ट्राइसिस जूल

10

Aपंक्ति के अंत में शुरू होने वाले संपादन मोड में प्रवेश करने के लिए दबाएँ ।


9

या स्पष्ट उत्तर है: Endपंक्ति के अंत में जाने के लिए कुंजी का उपयोग करें ।


1
हाँ, मैक टर्मिनल एक है जिसे मैंने देखा है कि हाईजैक कीज़ और उन्हें टर्मिनल के अंदर चलने वाले सामान के साथ नहीं दिया जाता है। जब भी मैं एक बिट के लिए एक मैक का उपयोग करें मुझे परेशान करने वाली चीजों में से एक।
davr

विम का उपयोग करने के पूरे बिंदु को 'एंड' जैसी कुंजी का उपयोग नहीं करना है। घर की पंक्ति कभी न छोड़ें।
जॉन थोरोड्सन

7
मैक पर कोई एंड की नहीं है।
kenorb

1
@kenorb वहाँ था जब मैंने टिप्पणी पोस्ट की थी ... लेकिन Apple को वर्षों से सुविधाएँ निकालना पसंद है। netdna.webdesignerdepot.com/uploads/2009/01/… यह वास्तव में सभी समय के मेरे पसंदीदा कीबोर्ड में से एक है
davr

9

मैं मानक टर्मिनल में विम के उपयोग के लिए मैकबुक के लिए हॉटकी नहीं देख सकता। आशा है कि यह किसी की मदद करेगा। MacOS उपयोगकर्ताओं के लिए (मैकबुक प्रो 2018 पर परीक्षण किया गया):

fn+ - शुरुआत की रेखा पर जाएं

fn+ - अंतिम पंक्ति में जाएं

fn+ - पृष्ठ को ऊपर ले जाएं

fn+ - पृष्ठ को नीचे ले जाएं

fn+ g - दस्तावेज़ की शुरुआत में कर्सर ले जाएँ

fn+ shift + g - दस्तावेज़ के अंत में कर्सर को स्थानांतरित करें

पिछले दो आदेशों के लिए कुछ समय के लिए दो बार टैप करना होगा।


6

संभवतः असंबंधित, लेकिन यदि आप वर्तमान लाइन के बाद एक नई लाइन शुरू करना चाहते हैं, तो आप लाइन में कहीं भी ओ का उपयोग कर सकते हैं।


3

सबसे आसान विकल्प कुंजी में होगा $। आप पाठ के ब्लॉक के साथ काम कर रहे हैं, तो आप आदेश की सराहना करते हैं सकता है {और }आदेश क्रमशः एक पैराग्राफ वापस ले जाने और आगे के लिए, में।


2

मुझे होम / एंड के लिए इन्सर्ट मोड में लाइनों की शुरुआत और अंत करने के लिए मुझे इस्तेमाल किया गया था (विंडोज में उपयोग से और मुझे लगता है कि लिनक्स), जिसका मैक समर्थन नहीं करता है। यह विशेष रूप से कष्टप्रद है क्योंकि जब मैं रिमोट सिस्टम पर विम का उपयोग कर रहा हूं, तो मैं भी आसानी से नहीं कर सकता। कुछ दर्दनाक परीक्षण और त्रुटि के बाद, मैं इन .vimrcपंक्तियों के साथ आया, जो एक ही काम करते हैं, लेकिन लाइन की शुरुआत के लिए Ctrl-A और लाइन के अंत में Ctrl-D के लिए बाध्य है। (किसी कारण से, Ctrl-E मुझे लगता है कि आरक्षित है या कम से कम मैं इसे बांधने का तरीका नहीं समझ सकता।) आनंद लें।

:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>

ASCII नियंत्रण वर्ण कोड के लिए यहां एक अच्छा चार्ट है जो अन्य लोगों के लिए भी है:

http://www.physics.udel.edu/~watson/scen103/ascii.html

आप Ctrl-V + Ctrl- के रूप में अच्छी तरह से कर सकते हैं, लेकिन यह इस तरह की जगहों पर पेस्ट नहीं करता है।

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