उदात्त पाठ 2: मांग पर सफेद स्थान ट्रिम ट्रिम


99

मुझे पता है कि Sublime Text 2 बचत करने पर फाइलों पर पीछे चल रही सफेद जगह को हटा सकता है।

जब एक टीम में काम करते हैं और एक फाइल में बदलाव के लिए यह बड़ा अंतर पैदा करता है जो सहकर्मी कोड समीक्षा को अधिक बोझिल बना देता है। उस कारण से मैं केवल सफ़ेद स्थान की सफाई करना पसंद करता हूँ जब मैं किसी भी तरह से फ़ाइल में भारी बदलाव कर रहा हूँ और व्हाट्सएप छोड़ देता हूँ क्योंकि यह मामूली बदलाव है।

मैं जानना चाहूंगा कि क्या फ़ाइल पर मांग पर सफेद स्थान की ट्रिमिंग को निष्पादित करने के लिए कोई आदेश है , इसके अलावा "Activate trimming on save > Save file > Deactivate trimming"

दस्तावेज़ीकरण में खोज करना और स्टैकओवरफ़्लो पर कुछ भी प्रासंगिक नहीं दिखा, सभी लिंक सेव पर ऑटो ट्रिमिंग के बारे में बात करते हैं।


1
यह सीधे आपके प्रश्न का उत्तर नहीं देता है, लेकिन यदि आप Git का उपयोग संस्करण नियंत्रण के लिए कर रहे हैं तो यह मदद कर सकता है: $ mv .git/hooks/pre-commit.sample .git/hooks/pre-commitजो मुझे इस ब्लॉग से मिला है ।
पॉल फियोरावंती

97
साथी गोगलर्स के लिए: नॉन-ऑनडेमैंड तरीका इस सेटिंग को जोड़ना है:"trim_trailing_white_space_on_save": true
नैट ग्लेन

3
@Nate ग्लेन की टिप्पणी के लिए एक वृद्धि के रूप में, ध्यान दें कि मार्कडाउन से व्हाट्सएप को ट्रिम करने से आप मुसीबत में पड़ सकते हैं, खासकर यदि आप किसी और के जानबूझकर सफेद स्थान को ट्रिम कर देते हैं और इसे नोट किए बिना करते हैं। आप Markdown.sublime-settingsग्लोबल ट्रिम को बचाने और हादसों को रोकने के लिए संपादित और अक्षम कर सकते हैं ।
तेहफू

महत्वपूर्ण: यदि {} ब्रेसिज़ के बीच 1 से अधिक लाइन है, तो सुनिश्चित करें कि आप ऊपर की लाइन पर ',' लगाते हैं या जब आप सहेजने का प्रयास करते हैं तो आपको एक त्रुटि मिलेगी।
slindsey3000

1
"जब एक टीम में काम करते हैं और एक फाइल में बदलाव के लिए यह बड़ा अंतर पैदा करता है जो सहकर्मी कोड की समीक्षा को और अधिक बोझिल बना देता है" यहाँ गहरा मुद्दा पीछे आने वाले व्हाट्सएप के साथ है जो इसे पहले स्थान पर रेपो में नहीं बनाना चाहिए। आदर्श रूप से - ठीक है क्योंकि यह आपके लिए गंदे पैच के प्रकार बनाता है। अपने कोडिंग मानकों में व्हॉट्सएप को प्रतिबंधित करें, और अपने लिंटर / प्रतिबद्ध हुक में खराब व्हाट्सएप के साथ पकड़ें।
फ्रैंक किसान

जवाबों:


71

खबरदार: इस प्लगइन का उपयोग करने से उदात्त पाठ काफी धीमा हो जाता है

मैं इसके लिए TrailingSpaces plugin का उपयोग करता हूं ।

अनुगामी रिक्त स्थान हाइलाइट करें और उन्हें एक फ्लैश में हटा दें।

ST2 फ़ाइल सहेजने पर अनुगामी रिक्त स्थान को स्वचालित रूप से हटाने का एक तरीका प्रदान करता है। आपकी सेटिंग के आधार पर, उन्हें केवल हाइलाइट करना और / या उन्हें हाथ से हटाना अधिक आसान हो सकता है। इस प्लगइन प्रदान करता है कि बस!

उपयोग: "संपादित करें / अनुगामी रिक्त स्थान / हटाएं" पर क्लिक करें।

एक कुंजी बंधन जोड़ने के लिए, "प्राथमिकताएं / कुंजी बाइंडिंग - उपयोगकर्ता" खोलें और जोड़ें:

{ "keys": ["ctrl+alt+t"], "command": "delete_trailing_spaces" }

1
हाँ, मुझे यह जवाब सबसे अच्छा लगा ... अपग्रेड सेफ + बस काम करता है - धन्यवाद
Rob

1
मैंने देखा है कि इस प्लगइन को स्थापित करने के बाद शब्दों को खोजने के लिए ctrl + F फीचर धीमा हो जाता है इसलिए मैंने इसे हटा दिया, क्या आप मुझे बता सकते हैं कि क्या यही स्थिति आपके साथ है?
डेनिसबोट

Ctrl + Shift + T का उपयोग पहले से ही Sublime में अंतिम बंद टैब को खोलने के लिए किया जाता है। इसलिए मैं
Pawel

5
वहाँ एक विकल्प कहा जाता है trailing_spaces_trim_on_save, आप के लिए सेट कर सकते हैं जो trueमें Preferences > Package Settings > Trailing Spaces > Settings - User। आप कीबोर्ड शॉर्टकट को बांधने के बजाय इसका उपयोग कर सकते हैं, मुझे यह मेरी जरूरतों के लिए बेहतर लगता है
dspacejs

चेतावनी: बड़ी फ़ाइलों के माध्यम से स्क्रॉल करने से यह प्लगइन स्थापित होने के साथ काफी धीमा हो जाता है।
संकलन

67

मैं उदात्त पाठ के भीतर त्वरित ऑन-डिमांड समाधान के लिए इन चरणों का उपयोग करता हूं:

  1. खोजें> बदलें ...
  2. क्या ढूँडो: [ \t]+\n
  3. से बदलो: \n
  4. सबको बदली करें

आप फ़ाइलों के एक बड़े सेट के लिए भी ऐसा कर सकते हैं

  1. फाइंड> फाइल्स में खोजें ...
  2. खोजें: [ \t]+\n
  3. कहाँ पे:
  4. बदलने के: \n
  5. बदलने के

5
यह विधि पिछले एक को छोड़कर सभी लाइनों के लिए काम करती है।
जॉनकॉम

1
@Joncom अंतिम पंक्ति के बारे में सही है। उदात्त पाठ 3 में, \tरिक्त स्थान से मेल नहीं खाता है, इसलिए लिखित रूप में उत्तर केवल अनुगामी टैब निकालता है। मुझे लगता है कि मैं पसंद करता हूं \s+\n, लेकिन ध्यान दें कि यह रिक्त लाइनों को भी हटा देता है। तुम भी आप जोड़ सकते हैं अंतिम सीमा पर सफेद स्थान को निकालना चाहते हैं \s+\zके रूप में इतना: (\s+\n|\s+\z)
canhascodez

3
([\t ]+\n|\s+\z)<- रिक्त लाइनों को नहीं हटाता है।
canhascodez

4
सही रेगेक्स होना चाहिए [ \t]+$और इसे कुछ भी नहीं बदलना चाहिए ।
कोडस्मिथ

27

आप बस एक regex का उपयोग ट्रेलिंग व्हाट्सएप को हटाने के लिए कर सकते हैं:

  1. खोजें> बदलें ...
  2. क्या ढूँडो: [^\S\r\n]+$
  3. के साथ बदलें: खाली छोड़ दें।
  4. 'सभी बदलें' पर क्लिक करें

[^\S\r\n]+$है Regex के लिए "कम से कम एक खाली स्थान के चरित्र (ताकि रिक्त स्थान और टैब नहीं बल्कि नई-पंक्तियों, एक डबल निषेध का प्रयोग करके) पंक्ति के अंत के बाद"

नियमित अभिव्यक्ति सक्षम होना चाहिए: सक्षम करें रेगेक्स खोज संवाद है


22

यहां एक सुपर सरल तरीका है जो अधिकांश स्थितियों में प्लगइन्स या सेटिंग्स और कार्यों का उपयोग नहीं करता है।

  1. हर लाइन के अंत में कर्सर का चयन करें और ले जाएँ
  2. CTRL-Shift दबाए रखें, बाएँ, दाएँ दबाएँ
  3. लाइनों के अंत में रिक्त स्थान और टैब को अब चुना जाना चाहिए। डिलीट या बैकस्पेस दबाएं

    नोट - विशेष अक्षर जैसे (और + को इस बिंदु पर लाइन के अंत में भी चुना जा सकता है, न कि केवल रिक्त स्थान पर।

सभी लाइनों को बहु-चयन कैसे करें:

एक तरीका यह है कि मध्य माउस कुंजी का उपयोग लंबवत चयन करने के लिए करें, अगर यह एक छोटा चयन है तो अंतिम कुंजी दबाएं।

हॉट-की के साथ:

  1. CTRL-A (सभी का चयन करें)
  2. CTRL-SHIFT-L (चयनित सभी लाइनों पर स्थान कर्सर)
  3. END (लाइनों के अंत पर जाएं)

आप कुछ फ़ंक्शन को खोजने के लिए खोज फ़ंक्शन का उपयोग कर सकते हैं, जो अंतरिक्ष वर्ण की तरह हर पंक्ति में होगा:

  1. \ (रेगेक्स का उपयोग करके)
  2. सभी खोजें पर क्लिक करें
  3. प्रत्येक पंक्ति के अंत में कई कर्सर प्राप्त करने के लिए "अंत" कुंजी दबाएं

नमूना पाठ:

text and number     44  more text and a space  
text and number 44  more text and 2 tabs        
text and number 44  more text and no space or tab

text and number 44  more text after a line feed

2
नोट: अंतिम स्थिति में मल्टी-कर्सर के साथ सभी लाइनों को हाइलाइट करने के लिए आप CTRL + A और उसके बाद CTRL + SHIFT + L का उपयोग कर सकते हैं।
रिचर्ड मार्सेल - Drackir

2
अन्य डेटासेट पर इस तकनीक का उपयोग करके मैंने पाया है कि यह सही नहीं है। उदात्त पाठ भी अनुगामी रिक्त स्थान के साथ) और + जैसे विशेष वर्णों को उजागर करेगा। विशेष वर्णों में कुछ डेटा समाप्त होने पर सावधान रहें।
शन्मेग्रे

2
इसके अलावा, \sregex में FYI न केवल अंतरिक्ष चरित्र से मेल खाता है, बल्कि टैब और नई लाइनें (यानी "व्हाट्सएप") न केवल रिक्त स्थान हैं। :)
रिचर्ड मार्स्केल - Drackir

13

मुझे यहां एक आत्मा मिली: http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

आप पैकेज को संशोधित कर सकते हैं

trim_trailing_white_space.py

डिफ़ॉल्ट संकुल निर्देशिका में इस प्रकार स्थित है:

import sublime, sublime_plugin

def trim_trailing_white_space(view):
    trailing_white_space = view.find_all("[\t ]+$")
    trailing_white_space.reverse()
    edit = view.begin_edit()
    for r in trailing_white_space:
        view.erase(edit, r)
    view.end_edit(edit)

class TrimTrailingWhiteSpaceCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        trim_trailing_white_space(self.view)

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trim_trailing_white_space(view)

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                edit = view.begin_edit()
                view.insert(edit, view.size(), "\n")
                view.end_edit(edit)

अब आप अपने कीमैप कॉन्फ़िगरेशन में कमांड जोड़ सकते हैं:

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }

मेरे लिए सबसे अच्छा समाधान, मैं सिर्फ एक ऐसा करने के लिए एक प्लगइन जोड़ना नहीं चाहता। धन्यवाद।
puro_nervio

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