Frage Sublime Text 2: Nach Bedarf Leerzeichen abschneiden


Ich weiß, dass Sublime Text 2 den nachträglichen Leerzeichen auf Dateien beim Speichern löschen kann.

Wenn man in einem Team arbeitet und eine Änderung an einer Datei vornimmt, tendiert dies dazu, große Diffs zu erzeugen, die Peer-Code-Review mühsamer machen. Aus diesem Grund ziehe ich es vor, nur die Leerraumreinigung durchzuführen, wenn ich ohnehin große Änderungen an einer Datei anwende und Whitespace für kleine Änderungen belasse.

Ich würde gerne wissen, ob es einen Befehl zum Ausführen des Trimmens des Leerraumes gibt auf Nachfrage in einer anderen Datei als "Activate trimming on save > Save file > Deactivate trimming".

Die Suche in der Dokumentation und im Stackoverflow zeigte nichts Relevantes, alle Links scheinen über das automatische Trimmen beim Speichern zu sprechen.


75
2017-09-06 09:38


Ursprung


Antworten:


Vorsicht: Dieses Plugin verwenden macht Sublime Text deutlich langsamer

ich benutze TrailingSpaces Plugin dafür.

Markieren Sie nachgestellte Leerzeichen und löschen Sie sie im Handumdrehen.

ST2 bietet eine Möglichkeit, nachstehende Leerzeichen automatisch zu löschen   sparen. Je nach Ihren Einstellungen ist es vielleicht einfacher, sie zu verwenden   Markieren Sie sie und / oder löschen Sie sie von Hand. Dieses Plugin bietet nur   Das!

Verwendung: Klicken Sie auf "Leerzeichen bearbeiten / löschen".

Um eine Tastenbindung hinzuzufügen, öffnen Sie "Einstellungen / Tastenbelegung - Benutzer" und fügen Sie hinzu:

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

66
2017-09-10 09:11



Ich verwende diese Schritte für eine schnelle On-Demand-Lösung in Sublime Text:

  1. Suchen> Ersetzen ...
  2. Finde was: [ \t]+\n
  3. Ersetzen mit: \n
  4. Alles ersetzen

Sie können dies auch für eine große Anzahl von Dateien über

  1. Suchen> In Dateien suchen ...
  2. Finden: [ \t]+\n
  3. Woher:
  4. Ersetzen: \n
  5. Ersetzen

50
2017-10-15 21:27



Hier ist eine sehr einfache Methode, die keine Plugins oder Einstellungen verwendet und in den meisten Situationen funktioniert.

  1. Mehrfachauswahl und Cursor an das Ende jeder Zeile bewegen
  2. Halten Sie STRG-Shift, drücken Sie links, rechts
  3. Die Leerzeichen und Tabulatoren am Ende der Zeilen sollten jetzt ausgewählt sein. Drücken Sie die Entf-Taste oder die Rücktaste

    Hinweis - Sonderzeichen wie (und +) können an dieser Stelle auch am Ende der Zeile ausgewählt werden, nicht nur Leerzeichen.

So wählen Sie alle Zeilen aus:

Eine Möglichkeit besteht darin, mit der mittleren Maustaste vertikal auszuwählen und dann die Ende-Taste zu drücken, wenn es sich um eine kleine Auswahl handelt.

Mit Hot-Keys:

  1. STRG-A (alle auswählen)
  2. CTRL-SHIFT-L (Cursor auf alle ausgewählten Zeilen setzen)
  3. ENDE (zum Ende der Zeilen)

Sie können auch die Funktion find verwenden, um etwas zu finden, das in jeder Zeile steht, wie das Leerzeichen:

  1. \ s (mit Regex)
  2. Klicken Sie auf Alle suchen
  3. Drücken Sie die Taste "Ende", um mehrere Cursor am Ende jeder Zeile zu erhalten

Beispieltext:

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

19
2018-05-08 23:18



Ich habe hier eine Seelenverfassung gefunden: http://www.slimetext.com/forum/viewtopic.php?f=4&t=4958

Sie können das Paket ändern

trim_trailing_white_space.py

im Standard-Paketverzeichnis, wie folgt:

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)

Jetzt können Sie den Befehl zu Ihrer Keymap-Konfiguration hinzufügen:

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

12
2017-09-06 11:54



Sie können einfach eine Regex verwenden, um nachfolgende Leerzeichen zu entfernen:

  1. Suchen> Ersetzen ...
  2. Finde was: [^\S\r\n]+$
  3. Ersetzen durch: leer lassen.
  4. Klicken Sie auf "Alle ersetzen".

[^\S\r\n]+$ ist Regex für "mindestens ein Leerzeichen Zeichen (also Leerzeichen und Tabulatoren, aber keine Zeilenumbrüche, mit einer doppelten Negation), gefolgt vom Ende der Zeile"


10
2017-10-24 08:48