कर्सर <Esc> के बाद लाइन की शुरुआत में क्यों जाता है?


12

मैंने आवेषण मोड में एक .txt फ़ाइल में एक पंक्ति के साथ संपादन करते समय ध्यान दिया है कि कर्सर एक महत्वपूर्ण कुंजी क्रम के बाद लाइन के शुरू में चला जाएगा:

<esc>:w

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

मैं खिड़कियों पर जीवीएम 7.4 का उपयोग कर रहा हूं। मेरा .vimrc बहुत बुनियादी है, मुझे विश्वास नहीं है कि मेरी कोई भी सेटिंग इस व्यवहार में हस्तक्षेप करती है। मैंने mswin.vim और example.vim की सोर्सिंग को भी अपने .vimrc (आधिकारिक vim.org विंडोज़ इंस्टॉलर के साथ बंडल करके हटा दिया है) को हटा दिया है।

नीचे दिए गए टिप्पणियों को पढ़ने के बाद मैंने इस मुद्दे को फिर से देखा और महसूस किया कि कर्सर केवल लाइनों पर एक लिखने के बाद दूर की ओर स्लाइड करता है जो पूरी तरह से सफेद स्थान के पीछे से बना है। दूसरे शब्दों में, कर्सर केवल esc-: w पर बाईं ओर स्लाइड करता है जब लाइन रिक्त स्थान के अलावा अन्य वर्णों के साथ एक लटकता हुआ इंडेंट होता है । .Vimrc इन सेटिंग्स के साथ इंडेंट व्यवहार को संभाल रहा है:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent 

तो, एक इंडेंटेड लाइन के नीचे बनाई गई एक नई लाइन में 4 ट्रेलिंग व्हाइट स्पेस होंगे जो लाइन के पहले 4 स्पेस के रूप में हैं (जो मैं रखना चाहता हूं)। 'Esc' कुंजी पर कर्सर को बफर के बाईं ओर दबाएं।

क्या श्वेत रिक्त स्थान (इंडेंटेशन के रूप में) को पीछे छोड़ते हुए, सामान्य मोड पर लौटने के लिए 'esc' मारने पर कर्सर की स्थिति बनाए रखने का कोई तरीका है?


3
मैंने किसी भी प्लेटफ़ॉर्म पर विम के इस व्यवहार पर कभी गौर नहीं किया है ... अगर आप gVim शुरू करते हैं तो क्या होता है: gvim -u NONE -U NONE(आप या तो cmd.exe का उपयोग कर सकते हैं, या शॉर्टकट बना सकते हैं)? यह आपकी (g) vimrc फ़ाइलों को लोड करने से रोकेगा।
मार्टिन टूरनोइज

1
क्या आपकी पूरी vimrc फाइल है? मेरा पहला संदेह यह होगा कि आपकी vimrc फ़ाइल में एक स्वतः पूर्णता व्हाट्सएप को हटा रही है। जब आप किसी vimrc फ़ाइल के बिना gVim शुरू करते हैं तो व्यवहार बदल जाता है (ऊपर टिप्पणी देखें)?
मार्टिन टूरनोइज

ऊपर मेरा पूरा नहीं है .vimrc, अन्य सेटिंग्स भी हैं। .Vimrc (: Scriptnames no .vimrc या .gvimrc) दिखाता है कि मेरी समस्या हल हो रही है। आप बिल्कुल सही हैं, मुझे अपने .vimrc या कुछ और के माध्यम से देखने की ज़रूरत है जो कि खट्टा है जो इस कारण हो सकता है।
जिम

जाहिरा तौर पर व्हॉट्सएप-ऑन-नई-लाइनों का यह उन्मूलन एक वांछनीय व्यवहार है, मैं यहां पढ़ रहा हूं यह व्हाट्सएप की फाइल को साफ रखने के लिए है।
जिम

यह नई लाइनें खोलने के बारे में है ... एक फ़ाइल में लिखने के बारे में नहीं?
मार्टिन टूरनोइज

जवाबों:


11

ऑटिंडेंट के लिए दस्तावेज़ीकरण को देखते हुए इसका उत्तर क्यों और कैसे इसके आसपास काम करना है। :help 'autoindent':

नई लाइन शुरू करते समय ( <CR> इन्सर्ट मोड में टाइप करते समय या "ओ" या "ओ" कमांड का उपयोग करते हुए) वर्तमान लाइन से इंडेंट कॉपी करें। यदि आप नई लाइन को छोड़कर कुछ भी टाइप नहीं करते हैं <BS>या CTRL-Dफिर टाइप करते हैं <Esc>, CTRL-Oया <CR>, इंडेंट फिर से डिलीट हो जाता है। कर्सर को दूसरी पंक्ति में ले जाने का एक ही प्रभाव होता है, जब तक कि 'I' ध्वज को 'cpoptions' में शामिल नहीं किया जाता है।

दूसरे शब्दों में, यदि आप चाहते हैं कि यह इंडेंट खोना नहीं है, तो कुछ टाइप करें और फिर हिट करने से पहले बैकस्पेस दें Esc, और अग्रणी स्थान बना रहेगा।

वैकल्पिक रूप से, यदि आप इंसेंट स्तर पर वापस आना चाहते हैं, जब आप इन्सर्ट मोड में वापस जाते हैं और 'cindent'साथ ही उपयोग कर रहे हैं , तो Shift-Sइसके बजाय उपयोग करें i, जो (पहले से खाली) लाइन को क्लियर कर देगा, और उपयुक्त इंडेंटेशन स्तर पर शुरू होगा। यह ऊपर दिए गए के रूप में एक सामान्य समाधान नहीं है, लेकिन जब मैं सी कोड लिख रहा हूं, तो मैं इसे पसंद करता हूं, ताकि मेरी फाइलें वास्तव में केवल सफ़ेद-स्थान के साथ सहेजी न जाएं।


मूल दस्तावेज से मेरे प्रश्न का यह निश्चित उत्तर है। सारांश और कथा के लिए धन्यवाद - मैंने इस पर ध्यान नहीं दिया होगा: इस जानकारी के लिए एच ऑटोइंडेंट। एक समाधान के लिए अग्रणी चर्चा के लिए @Carpetsmoker भी धन्यवाद।
जिम

इसने एक समस्या को हल किया जिसमें मुझे ओ और ओ को हटाने के लिए सम्मिलित करने की विधा शामिल थी, लेकिन इंडेंटेशन रखने के लिए नहीं। यह करके किया जा सकता है nnoremap o o <BS><Esc><DEL>, औरnnoremap O O <BS><Esc><DEL>
मैक्स कोपलान

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