Sublime Text'de boşluk girintisini düzeltme / dönüştürme


228

Örnek: 2 boşluk girintili bir belgem varsa ve 4 boşluk girintisine sahip olmasını istiyorsam, Yüce Metin düzenleyicisini kullanarak otomatik olarak nasıl dönüştürebilirim?

Yanıtlar:


525

Bir belgede girinti aralığınızı dönüştürmek için Sublime Text 2 veya 3'te düzgün bir hile.

TL; DR:

2 uzaydan 4 uzaya dönüştürme:

Sekme genişliğinin 2 olarak ayarlandığından emin olun. 2 boşluklu girintinizi sekmelere dönüştürün, sekme genişliği 4'e geçin ve girintiyi tekrar boşluklara dönüştürün.

Detaylı açıklama:

Şuraya git:

View -> Indentation

Bunu şöyle olmalıdır:

  • Indent using spaces [x]
  • Tab width: 2

belirleyin:

  • Convert Indentation to Tabs

Sonra Seçin:

  • Tab width: 4
  • Convert Indentation to Spaces

Bitti.


5
Teşekkür ederim! : D Çok zaman kazandırdı. Not. Ayrıca "find: space-space => tümünü seç => sekmesi" yapabilirsiniz
Automatico

11
Bütün bunları sizin için yapan yüce bir Makro oluşturdum gist.github.com/joshmfrankel/5707020 . Keyfini çıkarın :-)
Josh Frankel

2
Sekmeleri tüm sekme genişliğini kaplamıyor bir metin dosyanız varsa "Girintiyi boşluklara dönüştür" çalıştığını belirtmek istiyorum. Diyelim ki, yazarın sütunları biçimlendirmek için sekmeler kullandığı bir dosya için, sekmelerde bul ve değiştir yaparsanız, sonuçta elde edilen sütunlar artık dizilmez. "
Girintiyi

Ayrıca Josh'un makrosunu görmeden önce bir iş arkadaşı için makrolar ve örnek tuşlar oluşturdum. Mine, ileri geri geçiş yapmak için ctrl + 2 ve ctrl + 4 kullanıyor: gist.github.com/beaugunderson/8588871
Beau

74

Aslında akıl sağlığımın kullanıcı tercihlerinin şu şekilde tanımlanmasını daha iyi buldum:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

detect_indentation: falseO aksine, her dosya bu ayarları onurlandırmak için Sublime zorlar gibi özellikle önemlidir View -> Indentationayarlara.

Süslü olmak istiyorsanız, aşağıdakileri yapıştırarak kodunuzu (YMMV) otomatik olarak yeniden girintili yapmak için bir klavye kısayolu da tanımlayabilirsiniz Sublime -> Preferences -> Key Binding - User:

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

boşlukları görselleştirmek için:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],

9

Zihnimde Magne'den daha basit bir çözüm buldum:

Mac'te:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

Pencerelerde veya diğer platformlarda cmd+fve alt+entersiz findve select allkısayol tuşlarınız ne olursa olsun değişir .

Not: kodunuzda birden fazla alan varsa bu yöntem "hatalara" yatkındır. Bu nedenle Magne'nin yönteminden daha az güvenlidir, ancak daha hızlıdır (en azından benim için).


Bunu bu şekilde çalıştıramadım, ama prensibi kullandım ve sadece bul ve değiştir (Mac'te cmd-option-F) yaptım ve "" (4 boşluk) yerine "" (2 boşluk) koydum. Ve işe yaradı!
evanbikes

Bunu şimdi yapmanın başka bir yolunu buldum, ancak dile özgü. Gibi bir biçimlendirme eklentiniz RubyFormatvarsa, istediğiniz sekme boyutunu ayarlayabilir ve daha sonra kodun yeniden biçimlendirilmesini yapabilirsiniz. Bu durumda RubyFormatolurdu cmd+shift+R.
Automatico

7

Önerilerin çoğu 2 -> 4 alanı dönüştürürken çalışır. 4 -> 2 dönüştürürken bazı sorunlarla karşılaştım.

İşte ben kullanarak sona erdi:

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]

5

Arama yapmayı ve daha hızlı kullanmayı değiştirirseniz, aşağıdaki gibi bir normal ifade değiştirmeyi kullanabilirsiniz:

Bul (regex): (^|\G) {2}( "{2}" yerine <space>{2}iki boşluk yazabilirsiniz. Açıklık için burada kullanın.)

4 boşlukla veya istediğiniz gibi değiştirin \t.


5

Bunun için bir eklenti yazdım. Burada bulabilirsiniz veya paket kontrolünde "ReIndent" arayabilirsiniz. Çoğunlukla Kyle Finley'nin yazdığı şeyle aynı şeyi yapar, ancak 2 ve 4 arasında dönüştürme yapmak için kısayollarla ve tam tersi.


2

Bu kodu özel anahtar bağlantılarınıza eklemelisiniz:

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

ctrl + f12 tuşlarına basarsanız, dosyanızı 4 sekme boyutuna gönderir. Farklı bir sekme boyutu istiyorsanız, yalnızca "değer" numarasını değiştirirsiniz. Te biçimi basit bir json.


Beğendim teşekkürler! Bu şekilde 2 ve 4 ekledim:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

Yaptığım en kolay şey,

Girintimi Sekmeler olarak değiştirdi

ve sorunumu çözdü.

Sen de aynısını yapabilirsin,

Uzaylara

yanı sıra ihtiyaç başına.

Aynı anlık görüntüden bahsetti.

resim açıklamasını buraya girin


Evet, ama soru boşluk olarak girintiyle hem başladığınızda hem de bitirdiğinizde durum soruyor.
Magne

0

Son zamanlarda benzer bir sorunla karşılaştım. Yüce editör kullanıyordum. kodla ilgili değil, editörle ilgili bir sorun.

Aşağıda tercih ayarlarındaki değişiklik benim için çalıştı.

Yüce Metin menüsü -> Tercihler -> Ayarlar: Sözdizimine Özgü :

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
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.