एक कीस्ट्रोके साथ विम में अंतरिक्ष-विस्तारित "टैब" हटाएं?


19

मैं विम के साथ पायथन कोड संपादित करता हूं ।

tabकुंजी के साथ मुझे इंडेंटेशन के लिए चार स्थान डाले गए हैं। मैं चार के बजाय एक "बैकस्पेस" (?) स्ट्रोक के साथ उन रिक्त स्थान को कैसे हटा सकता हूं?

उसके लिए कुछ "सेट" विकल्प होना चाहिए ...

यहाँ मेरा .vimrc है:

set autoindent
set ts=4
set sw=4
set et

जवाबों:


23

आप Ctrl+Dएक टैब स्टॉप का बैकअप लेने के लिए उपयोग कर सकते हैं । यह वास्तव में पूरी पंक्ति को बाईं ओर एक टैब स्टॉप तक ले जाता है; Ctrl+Tसही करने के लिए एक ही बात करता है। ध्यान दें कि ये कीस्ट्रोक्स केवल इन्सर्ट मोड (काम <<और >>कमांड मोड में समकक्ष के लिए) में काम करते हैं।



5

tl; डॉ: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

संक्षिप्त रूप: set ts=4 sts=-1 sw=0 et

व्याख्या

यदि आप इसे सेट करते हैं softtabstop(या sts) -1यह स्वचालित रूप से tabstop( ts) के रूप में एक ही व्यवहार करेगा, जो आपको टैबिंग को बदलने पर बहुत परेशानी से बचाएगा। सेटिंग shiftwidth( sw) को 0प्रभावी रूप से वैसा ही बनाना चाहिए tabstop

विस्तार से

shiftwidth sw

(ऑटो) इंडेंट के प्रत्येक चरण के लिए उपयोग करने के लिए रिक्त स्थान की संख्या। के लिए प्रयुक्त cindent, >>, <<, आदि
जब शून्य tabstopमान उपयोग किया जाएगा।

tabstop ts

रिक्त स्थान की संख्या जो फ़ाइल के लिए गिना जाता है। इसे भी देखें : रीटैब कमांड, और softtabstopविकल्प

softtabstop sts

उन स्थानों की संख्या जो Tabसंपादन कार्य करते समय, जैसे डालने Tabया उपयोग करने के लिए गिना जाता है BS। ऐसा लगता है कि Tabएस डाला जा रहा है, जबकि वास्तव में रिक्त स्थान और एस का मिश्रण उपयोग किया जाता है। यह tabsअपने मानक मान पर सेट करने के लिए उपयोगी है , जबकि इसे सेट करने की तरह संपादित करने में सक्षम है stsजब stsऋणात्मक होता है, shiftwidthका उपयोग किया जाता है। यदि आप टैब को बहुत बदलते हैं तो यह आपको कुछ परेशानी से बचाएगा। जब expandtabसेट नहीं किया जाता है, तो Tabएस का उपयोग करके रिक्त स्थान की संख्या कम हो जाती है ।

expandtab et

इन्सर्ट मोड में: अ को सम्मिलित करने के लिए उचित संख्या में रिक्त स्थान का उपयोग करें। रिक्त स्थान इंडेंट >और <कमांड के साथ उपयोग किया जाता है और जब autoindentचालू होता है। expandtabचालू होने पर एक वास्तविक टैब सम्मिलित करने के लिए , का उपयोग करें Ctrl- V Tab। इसे भी देखें : रीटैब


नीट, मैं वर्षों से विम का उपयोग कर रहा हूं लेकिन एसटी / स्वा / टीएस की विरासत ने कभी मेरी आंख नहीं पकड़ी।
टिम

2

मैंने GreedyBackspace.vim को किसी ऐसे व्यक्ति के लिए लिखा है जो इस तरह से कुछ चाहता था। मैंने व्यक्तिगत रूप से इसका उपयोग नहीं किया है, इसलिए जब से मैंने इसे अपडेट किया है, तब से यह एक समय हो गया है। मुझे हाल ही में इस पर कोई बग रिपोर्ट नहीं मिली है, हालांकि।


1

कई विकल्प:

  1. आप सभी व्हाट्सएप को 'रीटैब' कर सकते हैं ताकि उन्हें टैब से बदल दिया जाए। इस तरह उन्हें आसानी से हटाया जा सकता था।
  2. आप कर सकते हैं (यह अछूता है, इसलिए मैं यहां केवल विचारों का प्रस्ताव दे रहा हूं) एक ऐसा कार्य करें जो 'सामान्य रूप से 4 बार बैकस्पेस कुंजी' निष्पादित करता है। फिर इसे किसी चीज़ में मैप करें। हालांकि, यह जानने का कोई तरीका नहीं है कि क्या यह रिक्त स्थान या कुछ महत्वपूर्ण पात्रों को हटा देगा, इसलिए यह संभावित रूप से असुरक्षित है।
  3. '4X' अंतिम 4 वर्णों को हटा देगा (यह बड़ा X है, छोटा नहीं है, छोटा Del कुंजी की तरह कार्य करेगा)।

0

सबसे आसान तरीका है <<, एक के साथ दोहराएँ.


नमस्कार और सुपरयुसर का स्वागत है। हालाँकि मैं आपके उत्तर से सहमत हूँ कि आप स्वयं vi उपयोगकर्ता हैं। आपका उत्तर संक्षिप्त है, यह नहीं समझाता है कि आप जो सुझाव दे रहे हैं वह क्यों सुझाते हैं और क्यों आप किसी ऐसी चीज का सुझाव नहीं दे रहे हैं जो पूछे गए प्रश्न पर फिट बैठता है।
मोगेट

-1

क्या आपने अपने VIM में विस्तारित टैब सेटिंग का उपयोग करके जाँच की है ?

:set noet

मैं आमतौर पर फाइलों पर काम करते समय टैब को रखना पसंद करता हूं।
जब यह आवश्यक होता है, तो मैं टैब को 4 स्थानों या आवश्यकता के अनुसार बदल देता हूं।

:%s/<ctrl+V><tab>/    /g
                  ----

एक छोटे से बोनस के रूप में, आपकी स्रोत फ़ाइल प्रति टैब 3 चार्ट से कम है :-)


ओह, मेरे पास एट है क्योंकि मुझे टैब का विस्तार करना है - मुझे लगता है - क्योंकि मैं जिस कोड को संपादित करता हूं उसे शुरू में लिखा गया था। अब मैं उस सम्मेलन का अनुसरण कर रहा हूं।
एवगेनी

आप अभी भी कर सकते हैं कि मैं क्या कहता हूं और अंत में रिक्त स्थान को पुनर्स्थापित कर सकता हूं (जब आपको फ़ाइल को रिपॉजिटरी को वापस देना होगा)
nik

हो सकता है कि आपके पास एक विम फ़ंक्शन हो सकता है जो उन्हें खुले पर टैब में विस्तारित करता है और समापन पर रिक्त स्थान तक ढह जाता है? क्या किसी के भी पास कोई सुझाव है?
साठफुटेरसूड

यह वास्तव में एक अप्रभावी उत्तर है - यह वास्तव में किसी भी उपयोगी जानकारी प्रदान किए बिना, टैब-बनाम-स्पेस बहस को फिर से खोल देता है।
डिट्रिच एप्प

-2

मुझे नहीं लगता कि कोई रास्ता है। एक बार टैब कुंजी को चार स्थानों तक विस्तारित किया जाता है, विम के पास यह जानने का कोई तरीका नहीं है कि वे कभी टैब थे।


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