उदात्त पाठ 3, रिक्त स्थान को टैब में बदलें


192

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

// संपादित करें:
मेरी इच्छा यह स्वचालित रूप से करने की है ! -> खुले, बचाने या मक्खी पर
क्या कोई जानता है कि कैसे करना है?


मैंने यह कोशिश की :

import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
  # Run ST's 'expand_tabs' command when saving a file
  def on_pre_save(self, view):
    if view.settings().get('expand_tabs_on_save') == 1:
      view.window().run_command('expand_tabs')

और यहाँ मेरी उपयोगकर्ता सेटिंग्स हैं:

{
    "auto_complete_selector": "source - comment, meta.tag - punctuation.definition.tag.begin",
    "auto_indent": true,
    "detect_indentation": true,
    "draw_white_space": "all",
    "ensure_newline_at_eof_on_save": true,
    "expand_tabs_on_save": true,
    "font_face": "SourceCodePro-Regular",
    "font_size": 10,
    "format_on_save": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": true,
    "open_files_in_new_window": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": false,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "use_tab_stops": false,
    "word_wrap": false
}

आपके द्वारा पोस्ट किया गया प्लगइन वास्तव में ST3 पर मेरे लिए ठीक काम कर रहा है, 3059 का निर्माण करें। क्या आप कंसोल को खोल सकते हैं Ctrl + ~और देख सकते हैं कि क्या यह आपको कोई प्लगइन त्रुटि दे रहा है? और यदि आपके पास पैकेज नियंत्रण स्थापित है, तो क्या आप देख सकते हैं कि क्या ExpandTabsOnSaveस्थापित प्लगइन के रूप में सूचीबद्ध है?
एंजेलन

पागल एक, लगता है स्थापित किया जा रहा है (सूची पैकेज के तहत सूचीबद्ध) और सांत्वना में मुझे कोई त्रुटि नहीं मिल सकती :-(
क्रिस

print("debug")यह देखने के लिए या प्लगइन के समान जोड़ने की कोशिश करें कि यह निष्पादित हो रहा है या नहीं।
15

omg, इसके काम करता है! विंडोज़ मशीन पर गलत निर्देशिका थी, पैकेज उपयोगकर्ता / / / / AppData / रोमिंग / SublimeText3 / संकुल में सूचीबद्ध हैं बहुत बहुत धन्यवाद!
क्रिस

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

जवाबों:


377

आपके उदात्त पाठ विंडो के निचले दाएं कोने पर, आपको एक इंडेंटेशन इंडिकेटर दिखाई देगा जो इस तरह दिखता है:

इंडेंटेशन विकल्प मेनू

इसे क्लिक करने से आपकी इंडेंटेशन वरीयताओं को समायोजित करने के विकल्प के साथ एक मेनू खुल जाएगा, और इससे भी महत्वपूर्ण बात Convert Indentation to Tabs/Spaces,।

यहां छवि विवरण दर्ज करें

उसी मेनू के तहत सूचीबद्ध है View -> Indentation


42
हाँ मैं जानता हूँ। मेरी इच्छा इसे स्वचालित रूप से बनाने की है ... कोई विचार?
क्रिस

2
@ क्रिश ツ आह। क्या आप अपने प्रश्न को अधिक स्पष्ट रूप से स्पष्ट करने के लिए सुधार कर सकते हैं? मुझे आपका अर्थ याद आ गया, इसलिए अन्य लोग भी।
एंगरसन

मेरे पास नीचे की स्थिति पट्टी नहीं है - मैं इसे कैसे प्राप्त करूं?
भूवैज्ञानिक

1
और यह पूरी फाइल पर होता है, और केवल एक चयन पर नहीं किया जा सकता है।
not2qubit

बहुत अच्छा। मैंने सभी को चुनने के लिए 'कमांड-ए' भी किया, 'कमांड- [' को अन-इंडेंट करने के लिए, फिर फाइल को ठीक करने के लिए 'एडिट> लाइन> रीइंडेंट' किया। मुझे यकीन है कि यह एक मैक्रो में बनाया जा सकता है।
ब्रूक्स डुबोइस

130

उदात्त विंडो के निचले भाग में, आप अपने टैब / स्पेस सेटिंग का प्रतिनिधित्व करते हुए कुछ देखेंगे।

फिर आपको विकल्पों के एक समूह के साथ एक ड्रॉपडाउन मिलेगा। जिन विकल्पों की आप परवाह करते हैं, वे हैं:

  • रिक्त स्थान में इंडेंटेशन बदलें
  • कन्वर्ट इंडेंटेशन को टैब्स में

पूरे दस्तावेज़ में अपनी इच्छित सेटिंग लागू करें।

उम्मीद है की यह मदद करेगा।


2
काश, यह ऑन-लोड और स्वचालित रूप से ... उन सभी फाइलों के लिए किया जा सकता था, जो मैं खोलती हूं। मेरा मतलब है: इंडेंटेशन स्पेस को टैब में बदलना। यह स्वचालित रूप से ऑन-लोड चलाया जाएगा :-)
फिलिप ओवर्टोनिंगर रिंग्लो

1
मैं तुम्हें उस पर सुनता हूं। मैं टैब पसंद करता हूं लेकिन मैं समझता हूं कि बहुत सारे कोड रिक्त स्थान के साथ क्यों लिखे गए हैं। रिक्त स्थान के साथ, आईडीई के बीच कोई असंगतता नहीं होगी - एक अंतरिक्ष एक अंतरिक्ष है। टैब आईडीई के बीच रिक्त स्थान की चर संख्या ले सकते हैं और कोड को अजीब बना सकते हैं।
एरियल

हैलो @Green - इसके बारे में क्या काम नहीं करता है? आइए इस पर काम करते हैं ...
19

80

जैसा कि आप पहले से ही जानते हैं, आप Preferences.sublime-settingsउदाहरण के लिए अपनी इंडेंटेशन सेटिंग को कस्टमाइज़ कर सकते हैं :

"detect_indentation": true,
"tab_size": 4,
"translate_tabs_to_spaces": false

यह आपके संपादक को उन टैब का उपयोग करने के लिए सेट करेगा जो 4 रिक्त स्थान हैं और डिफ़ॉल्ट व्यवहार को ओवरराइड करेगा जो सबलाइम का कारण बनता है कि आप जो भी फ़ाइल संपादित कर रहे हैं उसके इंडक्शन से मेल खाते हैं। इन सेटिंग्स के साथ, फ़ाइल को फिर से इंडेंट करने से किसी भी स्थान को टैब से बदल दिया जाएगा।

जहाँ तक किसी फ़ाइल को खोलते समय स्वचालित रूप से पुन: इंडेंट करने की बात है, तो यह उतना आसान नहीं है (लेकिन शायद यह बहुत अच्छा विचार नहीं है क्योंकि व्हॉट्सएप ने फ़ाइल में बदलाव के कहर को बदल दिया है)। कार्रवाई का एक बेहतर कोर्स क्या हो सकता है: आप फिर से इंडिकेशन के लिए एक शॉर्टकट मैप कर सकते हैं और बस ट्रिगर कर सकते हैं जब आप एक नई फ़ाइल खोलते हैं जिसमें आपको आवश्यकता होती है।


13

आप इस समस्या को हल करने के लिए कमांड पैलेट का उपयोग कर सकते हैं।

चरण 1: Ctrl + Shift + P(कमांड पैलेट को सक्रिय करने के लिए)

चरण 2: टाइप करें "इंडेंटेशन", चुनें "Indentation: Convert to Tabs"


1
अति उत्कृष्ट। धन्यवाद।
RJ

सबसे अच्छा उपाय। धन्यवाद!
मैथ्यू के

7

मेरे मामले में, इस लाइन से समस्या हल हो गई:

"translate_tabs_to_spaces": false

4

यहां एक समाधान है जो जब भी आप एक फ़ाइल खोलते हैं तो स्वचालित रूप से टैब में बदल जाएगा।

यह फ़ाइल बनाएँ .../Packages/User/on_file_load.py:

import sublime
import sublime_plugin

class OnFileLoadEventListener(sublime_plugin.EventListener):

    def on_load_async(self, view):
        view.run_command("unexpand_tabs")

ध्यान दें। यह फ़ाइल को खोलने के बाद बिना सहेजे हुए स्थिति में होने का कारण बनता है, भले ही कोई वास्तविक स्थान-से-टैब रूपांतरण नहीं हुआ हो ... हो सकता है कि कुछ इसके लिए एक फिक्स के साथ मदद कर सकते हैं ...


मुझे लगता है कि आपका मतलब है .../Packages/User/on_file_load.py, नहीं.php
प्रणव नटलापति

@PranavNutalapati कि पकड़ने के लिए धन्यवाद।
TheStoryCoder

हां यकीनन। कोई दिक्कत नहीं है।
प्रणव नटलापति

on_loadइसके बजाय प्रयास करें on_load_async
पेड्रो ग्यूस

3

सहेजने के लिए स्थान को स्वचालित रूप से टैब में परिवर्तित करने के लिए , निम्न पायथन स्क्रिप्ट को "$ SUBLIME_HOME $ \ Package \" के भीतर "UnexpandTabsOnSave" नामक एक नए बनाए गए सबफ़ोल्डर में जोड़ें:

import sublime, sublime_plugin, os

class ConvertSpacesToTabsOnSave( sublime_plugin.EventListener ):
  # Run Sublime's 'unexpand_tabs' command when saving any file
  def on_pre_save( self, view ):
    view.window().run_command( 'unexpand_tabs' )

प्रारंभिक संसाधन के लिए धन्यवाद।


0

आप सभी प्रोजेक्ट फ़ाइलों में स्थान के साथ टैब को बदल सकते हैं:

  1. एक प्रतिस्थापन सभी कर रहा है Ctrl+Shif+F
  2. रेगेक्स खोज सेट करें ^\A(.*)$
  3. निर्देशिका सेट करें Your dir
  4. द्वारा हटाया गया \1

    यहां छवि विवरण दर्ज करें

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

    आप मेनू पर जाकर Preferences -> Settingsऔर अपनी सेटिंग फ़ाइल में इन सामग्रियों को जोड़कर इन सेटिंग्स को सक्षम कर सकते हैं :

    1. "ensure_newline_at_eof_on_save": true,
    2. "trim_trailing_white_space_on_save": true,
  6. मेनू पर जाकर View -> Show Console (Ctrl+`)और कमांड चलाकर , उदात्त पाठ कंसोल खोलें : import threading; threading.Thread( args=(set(),), target=lambda counterset: [ (view.run_command( "expand_tabs", {"set_translate_tabs": True} ), print( "Processing {:>5} view of {:>5}, view id {} {}".format( len( counterset ) + 1, len( window.views() ), view.id(), ( "Finished converting!" if len( counterset ) > len( window.views() ) - 2 else "" ) ) ), counterset.add( len( counterset ) ) ) for view in window.views() ] ).start()
  7. अब मेन्यू में जाकर सभी बदली हुई फाइल्स को सेव करें File -> Save All

0

यदि आपके पास मैक है तो बस सहायता विकल्प का उपयोग करें (आमतौर पर मैक के मेनू बार पर अंतिम विकल्प) तो टाइप करें: "टैब इंडेंटेशन" और टैब इंडेंटेशन चौड़ाई चुनें

लेकिन आम तौर पर, आप इस मार्ग का अनुसरण कर सकते हैं: दृश्य -> ​​इंडेंटेशन



-1

यहां बताया गया है कि आप इसे सहेजने पर स्वचालित रूप से कैसे कर सकते हैं: https://coderwall.com/p/zvyg7a/convert-tabs-to-spaces-on-file-save

जब आप पैकेज प्रबंधक से इसे स्थापित करते हैं तो दुर्भाग्य से पैकेज काम नहीं कर रहा है।


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