Sublime Text 2: Talep üzerine arkadaki beyaz alanı kırpın


99

Sublime Text 2'nin kaydedildikten sonra dosyalardaki son beyaz alanı silebileceğini biliyorum.

Bir ekipte çalışırken ve bir dosyada değişiklik yaparken, bu durum eş kod incelemesini daha zahmetli hale getiren büyük farklar üretme eğilimindedir. Bu nedenle, beyaz boşluk temizliğini yalnızca bir dosyada büyük değişiklikler yaptığımda yapmayı ve küçük değişiklikler için olduğu gibi beyaz boşluk bırakmayı tercih ederim.

Bir dosyada isteğe bağlı olarak beyaz boşluğun kırpılmasını gerçekleştirmek için herhangi bir komut olup olmadığını bilmek istiyorum "Activate trimming on save > Save file > Deactivate trimming".

Dokümantasyonda ve stackoverflow'da arama yapmak alakalı hiçbir şey göstermedi, tüm bağlantılar kaydetme sırasında otomatik kırpmadan bahsediyor gibi görünüyor.


1
Bu doğrudan sorunuzu yanıtlamaz, ancak bu blogdan$ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit edindiğim sürüm kontrolü için Git kullanıyorsanız yardımcı olabilir .
Paul Fioravanti

97
Google çalışanları için: Ondemand olmayan yol bu ayarı eklemektir:"trim_trailing_white_space_on_save": true
Nate Glenn,

3
@Nate Glenn'in yorumuna yönelik bir iyileştirme olarak, Markdown'dan beyaz boşluğu kırpmanın, özellikle de bir başkasının kasıtlı beyaz alanını kesip fark etmeden bunu yaparsanız başınızı belaya sokabileceğini unutmayın. Markdown.sublime-settingsKaydederken genel kırpmayı düzenleyebilir ve devre dışı bırakabilir ve aksilikleri önleyebilirsiniz.
tehfoo

ÖNEMLİ: {} küme parantezleri arasında 1'den fazla satır varsa, yukarıdaki satıra bir ',' koyduğunuzdan emin olun, yoksa kaydetmeye çalıştığınızda bir hata alırsınız.
slindsey3000

1
"Bir ekipte çalışırken ve bir dosyada değişiklik yapıldığında, bu durum, eş kod incelemesini daha külfetli hale getiren büyük farklar üretme eğilimindedir" Buradaki daha derin sorun, takip eden beyaz boşlukla ilgili taahhütlerin ilk başta depoya girmemesi gerektiğidir. ideal olarak - tam da ima ettiğiniz türden kirli yamalar yarattığı için. Kodlama standartlarınızda takip eden beyaz boşlukları yasaklayın ve linter / commit kancalarınızda kötü boşluklar olan commit'leri yakalayın.
Frank Farmer

Yanıtlar:


71

Dikkat: Bu eklentiyi kullanmak Sublime Text'i önemli ölçüde yavaşlatır

Bunun için TrailingSpaces eklentisini kullanıyorum .

Sondaki boşlukları vurgulayın ve hemen silin.

ST2, dosya kaydedildiğinde takip eden boşlukları otomatik olarak silmek için bir yol sağlar. Ayarlarınıza bağlı olarak, sadece vurgulamak ve / veya elle silmek daha kullanışlı olabilir. Bu eklenti tam da bunu sağlar!

Kullanım: "Düzenle / Sondaki Boşlukları / Sil" i tıklayın.

Bir anahtar bağlama eklemek için "Tercihler / Anahtar Bağlamalar - Kullanıcı" öğesini açın ve şunu ekleyin:

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

1
Evet, bu cevabı en çok beğendim ... güvenli yükseltme + işe yarıyor - teşekkürler
Rob

1
Bu eklentiyi yükledikten sonra kelimeleri bulmak için ctrl + F özelliğinin yavaşladığını fark ettim, bu yüzden onu kaldırdım, aynı durumun sana da olup olmadığını söyleyebilir misin?
dennisbot

Sublime'da zaten son kapatılan sekmeyi açmak için Ctrl + Shift + T kullanılır. Bu yüzden Ctrl + Alt + T
Pawel'i

5
Adında bir seçenek yoktur trailing_spaces_trim_on_savesize ayarlayabilirsiniz trueiçinde Preferences > Package Settings > Trailing Spaces > Settings - User. Bir klavye kısayolunu bağlamak yerine bunu kullanabilirsiniz, ihtiyaçlarım için daha iyi buluyorum
dspacejs

Uyarı: Büyük dosyalar arasında gezinmek, bu eklenti yüklendiğinde önemli ölçüde yavaşlar.
compie

68

Sublime Text içinde isteğe bağlı hızlı bir çözüm için şu adımları kullanıyorum:

  1. Bul> Değiştir ...
  2. Ne buldun: [ \t]+\n
  3. İle değiştirin: \n
  4. Hepsini değiştir

Bunu çok sayıda dosya için şu yolla da yapabilirsiniz:

  1. Bul> Dosyalarda Bul ...
  2. Bul: [ \t]+\n
  3. Nerede:
  4. Değiştirin: \n
  5. Değiştir

5
Bu yöntem, sonuncusu dışındaki tüm satırlar için çalışır.
Joncom

1
@Joncom son satır konusunda haklı. Sublime Text 3'te \tboşluklarla eşleşmiyor gibi görünüyor, bu nedenle yazılan yanıt yalnızca sondaki sekmeleri kaldırır. Sanırım tercih ederim \s+\n, ancak boş satırları da sildiğini unutmayın. İyi ekleyebilir olarak son satırda boşluk kaldırmak istiyorsanız \s+\zşekilde: (\s+\n|\s+\z).
canhascodez

3
([\t ]+\n|\s+\z)<- boş satırları kaldırmaz.
canhascodez

4
Doğru normal ifade olmalı [ \t]+$ve onu hiçbir şeyle değiştirmelidir.
Kod Ustası

28

Sondaki beyaz boşlukları kaldırmak için bir normal ifade kullanabilirsiniz:

  1. Bul> Değiştir ...
  2. Ne buldun: [^\S\r\n]+$
  3. Şununla değiştirin: boş bırakın.
  4. "Tümünü Değiştir" i tıklayın

[^\S\r\n]+$olan Düzenli İfade "(boşluk ve sekme ancak yeni satır, bir çift olumsuzluk kullanarak bunu) hattının sonunda, ardından en az bir boşluk karakteri" için

Normal İfade etkinleştirilmelidir: Normal ifadeyi etkinleştir iletişim kutusu


22

İşte hiçbir eklenti veya ayar kullanmayan ve çoğu durumda çalışan süper basit bir yol.

  1. Çoklu seçim yapın ve imleci her satırın sonuna taşıyın
  2. CTRL-Shift tuşunu basılı tutun, Sola, Sağa Basın
  3. Satırların sonundaki boşluklar ve sekmeler şimdi seçilmelidir. Sil veya Geri Al tuşuna basın

    Not - Bu noktada satırın sonunda (ve + gibi özel karakterler de seçilebilir, yalnızca boşluk değil.

Tüm satırlarda Çoklu Seçim nasıl yapılır:

Bunun bir yolu, dikey olarak seçmek için farenin orta tuşunu kullanmak, ardından küçük bir seçim ise Bitiş Tuşuna basmaktır.

Kısayol tuşlarıyla:

  1. CTRL-A (tümünü seç)
  2. CTRL-SHIFT-L (imleci seçilen tüm satırlara yerleştirin)
  3. END (Satırın sonuna git)

Boşluk karakteri gibi her satırda olacak bir şey bulmak için de bul işlevini kullanabilirsiniz:

  1. \ s (normal ifade kullanarak)
  2. Tümünü Bul'u tıklayın
  3. Her satırın sonunda birden fazla imleç almak için "Son" tuşuna basın

Örnek yazı:

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
Not: Çoklu imleç son konumda olan tüm satırları vurgulamak için CTRL + A ve ardından CTRL + SHIFT + L ve ardından END tuşlarını kullanabilirsiniz.
Richard Marskell - Drackir

2
Bu tekniği diğer veri kümelerinde kullanarak mükemmel olmadığını buldum. Sublime Text, sondaki boşluklarla birlikte) ve + gibi özel karakterleri de vurgulayacaktır. Bazı veriler özel karakterlerle bitiyorsa dikkatli olun.
shanemgrey

2
Ayrıca, \snormal ifadedeki FYI yalnızca boşluk karakteriyle değil, aynı zamanda yalnızca boşluklarla değil, sekmelerle ve yeni satırlarla da (yani "boşluk") eşleşir. :)
Richard Marskell - Drackir

13

Burada bir ruh buldum: http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

Paketi değiştirebilirsiniz

trim_trailing_white_space.py

varsayılan paketler dizininde bulunur, bu şekilde:

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)

Şimdi komutu tuş eşleme yapılandırmanıza ekleyebilirsiniz:

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

Benim için en iyi çözüm, sadece bunu yapmak için bir eklenti eklemek istemiyorum. Teşekkürler.
puro_nervio

Benim için bu mükemmel çözüm, Thx
Vikrame
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.