Sublime Text 2: przycinanie białej spacji na żądanie

Wiem, że Sublime Text 2 może usunąć końcowe białe spacje na plikach po zapisaniu.

Podczas pracy w zespole i komentowania zmian do pliku powoduje to powstawanie ogromnych różnic, które sprawiają, że recenzja kodu jest bardziej uciążliwa. Z tego powodu wolę czyścić tylko białe spacje, gdy i tak wprowadzam ogromne zmiany do pliku i pozostawiam białe spacje, tak jak to jest w przypadku drobnych zmian.

Chciałbym wiedzieć, czy jest jakieś polecenie do wykonania przycinania białego spacja na żądanie {[7] } na pliku innym niż "Activate trimming on save > Save file > Deactivate trimming".

Wyszukiwanie w dokumentacji i na stackoverflow nie wykazało nic istotnego, wszystkie linki wydają się mówić o automatycznym przycinaniu przy zapisie.

Author: José Luis, 2012-09-06

5 answers

Uwaga: korzystanie z tej wtyczki sprawia, że Sublime Text znacznie wolniej

Używam do tego pluginuTrailingSpaces .

Zaznacz spacje końcowe i usuń je w mgnieniu oka.

ST2 umożliwia automatyczne usuwanie spacji na końcu pliku Zapisz. W zależności od ustawień, może być bardziej przydatne po prostu zaznacz je i / lub usuń ręcznie. Ta wtyczka zapewnia tylko to!

Użycie: kliknij " Edycja / spacje końcowe / Delete".

Aby dodać powiązanie klawiszy, otwórz "Preferences / Key Bindings-User" i dodaj:

{ "keys": ["ctrl+alt+t"], "command": "delete_trailing_spaces" }
 67
Author: Sridhar Katakam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-28 11:49:57

Używam tych kroków do szybkiego rozwiązania na żądanie w Sublime Text:

  1. Znajdź > Zamień...
  2. Znajdź Co: [ \t]+\n
  3. Zastąpić Przez: \n
  4. Zastąp Wszystkie

Możesz to również zrobić dla dużego zestawu plików za pomocą

  1. Znajdź > Znajdź w plikach...
  2. Znajdź: [ \t]+\n
  3. gdzie:
  4. zastąpić: \n
  5. Zastąp
 53
Author: Jason Favors,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-15 21:27:56

Oto bardzo prosty sposób, który nie używa wtyczek ani ustawień i działa w większości sytuacji.

  1. wielokrotne zaznaczanie i przesuwanie kursora na koniec każdej linii
  2. przytrzymaj CTRL-Shift, naciśnij lewy, prawy
  3. Spacje i tabulatory na końcu linii powinny być teraz zaznaczone. Naciśnij Delete lub Backspace

    Notatka - znaki specjalne takie jak ( i + mogą być również zaznaczone na końcu linii w tym momencie, nie tylko miejsca.

Jak wybrać wiele linii:

Jednym ze sposobów jest użycie środkowego klawisza myszy, aby wybrać pionowo, a następnie wcisnąć klawisz End, jeśli jest to mały wybór.

Z klawiszami skrótu:

  1. CTRL - A (Zaznacz wszystko)
  2. CTRL-SHIFT-L (Umieść kursor na wszystkich zaznaczonych liniach)
  3. END (przejdź do końca linii)

Możesz również użyć funkcji find, aby znaleźć coś, co będzie w każdej linii, na przykład znak spacji:

  1. \s (using regex)
  2. Kliknij Znajdź Wszystkie
  3. naciśnij klawisz "End", aby uzyskać wiele kursorów na końcu każdej linii

Przykładowy Tekst:

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
 20
Author: shanemgrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 14:35:29

I found a soulution here: http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

Możesz zmodyfikować pakiet

trim_trailing_white_space.py

Znajduje się w domyślnym katalogu packages, w ten sposób:

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)

Teraz możesz dodać polecenie do konfiguracji mapy klawiszy:

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }
 12
Author: Riccardo Marotti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 12:00:38

Możesz po prostu użyć wyrażenia regularnego, aby usunąć końcowe spacje:

  1. Znajdź > Zamień...
  2. Znajdź Co: [^\S\r\n]+$
  3. Zastąp przez: leave empty.
  4. Kliknij "Zamień Wszystkie"

[^\S\r\n]+$ jest Regex dla "co najmniej jednego znaku spacji (czyli spacji i tabulatorów, ale nie nowych linii, przy użyciu podwójnej negacji), po którym następuje koniec linii"

 12
Author: antou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 09:13:17