Xcode kaynak otomatik biçimlendirme


179

Bir C # geliştiricisi olarak, Visual Studio 2008'deki otomatik biçimlendirmeye oldukça bağımlı hale geldim. Özellikle, özensiz uygulamamdan sonra işleri tekrar şekle sokmak için CTRL+ K, Dklavye kısayolunu kullanacağım.

Şimdi Objective-C öğrenmeye çalışıyorum ve Xcode belirli özellikleri eksik, ama muhtemelen hiçbiri biçimlendirme kısayolu kadar acı verici değildir. Google aramalarım yerleşik bir şey getirmedi, ancak bazı hack'ler var gibi görünüyor. Bir şey mi eksik veya bu özellik Xcode'da doğal olarak mevcut değil mi?



Bağlantı için teşekkürler. Ben de buldum: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode Temelde bağlantınızla aynı tekniği kapsar. Bir deneyeceğim ve ne kadar iyi çalıştığını göreceğim.
jslatts

1
UniversalIndentGUI kullanan üçüncü taraf çözümü: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode
jslatts 15:09

Bu soruya benzer şekilde; cevabın kodu yeniden girintilemek için menü öğesi ve klavye kısayolu var: stackoverflow.com/questions/3558709/…
Basil Bourque

2
Apple'ın son 5 yılda bu konuda bir yeniliği var mı? Bu soru hala alakalı mi veya XCode şimdi kodu formatlamak için yeni ve daha iyi bir çözüm mü sunuyor?
mm24

Yanıtlar:


134

Ne yazık ki, Xcode'un mevcut Eclipse için VS veya Jalopy kadar geniş bir şeyi yok. Structure > Re-IndentKodu kaynak dosyanıza yapıştırdığınızda kullanılan otomatik biçimlendirme gibi bazı farklı özellikler de vardır. Yine de tamamen seninleyim; biçimlendirme sorunlarına yardımcı olacak bir şey mutlaka olmalı .


3
Teşekkür ederim, en azından bir şey eksik olmadığımı biliyorum. Otomatik tanımlama ağrıyı hafifletmeye yardımcı olur, ancak üçüncü taraf bir çözüme bakmam gerekecek.
jslatts

5
cevap olarak seçilmemelidir. @ken'den aşağıdaki cevap doğrudur
Ryan Angilly

@RyanAngilly Bu sorunun cevaplandığı yıla dikkat edin. O zamandan beri Xcode ile birçok şey değişti. ;-)
Marc W

1
@RyanAngilly ken yalnızca otomatik girintiyi nasıl açıklayacağını açıkladı. "Biçim" (beyaz boşluk ve yeni satır ekleme ve kaldırma ve bu gibi şeyler) ile gerçekte böyle değildir.
dergab

5
Girinti, seçilen tüm satırları girintili hale getiren kontrol-i ile sabitlenebilir.
zaph

427

Bu Ctrl+ i.

Ya da düşük teknoloji için kesip yapıştırın. Macun üzerinde yeniden biçimlenecek.


Teşekkürler! Bu, özellikle menü aslında klavye kısayolunu göstermediğinden faydalıdır.
jslatts

37
Ancak bu sadece girinti yapar. Hareketli ayraçlar, satır sonları ile ilgilenme vb.
Peter Ajtai

14
Bir kod formatlayıcının işleyeceği her şeyi yerine getirmediği için kabul edilmemelidir. Sadece yeniden girintiler,
powerj1984 14:13

1
İyi bahşiş. XCode'un buna sahip olmadığı ekstra topal.
AndrewK

4
evet @ powerj1984. Ben de bununla hayal kırıklığına uğradım. Ne de olsa doğru boşluk eklemez ,, =ya da diğer operatörleri. Neyi kastediyor. Başka hiçbir şey. Mac'in gerçekten Microsoft'tan burada öğrenmesi gerekiyor.
shashwat

35

Dikkate değer iki seçenek tavsiye etmek istiyorum. Hem oldukça yeni hem de gelişen.

ClangFormat-Xcode (ücretsiz) - her cmd + s dosyasında belirli bir stile yeniden biçimlendirilir ve kaydedilir, ekip içinde dağıtımı kolaydır

@Travisjeffery tarafından Clang'ın biçim araçlarını kullanarak kodunuzu biçimlendirmek için bir Xcode eklentisi.

Clang formatıyla Clang'ı kodunuzu LLVM, Google, Chromium, Mozilla, WebKit veya kendi yapılandırmanız gibi stillere formatlamak için kullanabilirsiniz.

Objective-Clean (ücretli, henüz denemedi) - önceden tanımlanmış stil kuralları ihlal edilirse uygulama hataları oluşturma - ekip içinde kullanmak oldukça zor, bu yüzden denemedim.

Çok az kurulumla, Xcode'u kullanarak kurallarınızı uygulamak için Uygulamamızı kullanabilirsiniz. Kurallarınızdan birini ihlal ederseniz, Xcode bir derleme hatası atar ve sizi hakaret eden satıra yönlendirir.


Bu eklenti ile kendi biçim yapılandırmanızı nasıl oluşturursunuz?
nbro

27

Xcode içinde, kaynak kodunuzu yeniden girintilemek için bu kısayolu kullanabilirsiniz

Girinti sorunları olan dosyaya gidin ve aşağıdakileri uygulayın:

  • Cmd+ Atüm kaynak kodlarını seçmek için

  • Ctrl+ Iyeniden girintilemek

Bu yardımcı olur umarım.


18

Kişisel favorim PrettyC wantabe haksız: http://uncrustify.sourceforge.net/ . Ancak birkaç milyar seçenek var, bu yüzden birisinin seçenekleri istediğiniz gibi ayarlamasına yardımcı olmak için yazdığı bir GUI'yi (aynı zamanda sourceforge'da) UniversalIndentGUI_macx'ı indirmenizi öneririm.

Ardından, seçilen metnin düzeltmesini kaldırmak için bu özel kullanıcı komut dosyasını ekleyebilirsiniz:

#! /bin/sh
#
# uncrustify!
echo -n "%%%{PBXSelection}%%%"
/usr/local/bin/uncrustify -q -c /usr/local/share/uncrustify/geo_uncrustify.cfg -l oc+ <&0
echo -n "%%%{PBXSelection}%%%"

Hayal etmeme, özellikle biçimlendirme blokları ile ilgili sorunlar yaşadım.
Liron Yahdav

12

Sen kullanabilirsiniz Command+ Atüm içeriği ve sonraki seçmek için Ctrl+ Iseçili içeriği biçimlendirmek için.



8

Cmd A + Ctrl I

Ya Cmd ASonra Sağ tıklayın . Git Yapısı -> Yeniden Girintileme


6

Kendinize iOS / OS X geliştiricilerine yardımcı olan akıllı bir Objective-C IDE olan AppCode için lisans satın almayı düşünün . AppCode, Xcode ile tamamen uyumludur, ancak güçlü özellikler eklemede Xcode'un ötesine geçer .

AppCode , JetBrains'ten Intellij IDEA IDE'nin Objective-C varyantı . Ayrıca, buradaki ana amaç, bir Microsoft ürününe IDEA deneyimine dokunmak için umutsuz bir girişim gibi görünen Visual Studio'ya popüler ReSharper uzantısının yazarlarıdır .

AppCode, mükemmele yakın yeniden düzenleme ve kod gezinme desteği sağlayan kendi kod analizcisini kullanıyor. Kodu yeniden girme ve tamamen yeniden biçimlendirme yeteneği de var (yine de zor durumlarda birkaç biçimlendirme ayarını kaçırmaya devam ediyorum, ancak çoğunlukla iyi çalışıyor).

Elbette deneme sürümünü deneyebilirsiniz.



4

XCode eklentisini deneyebilirsiniz https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Sadece github deposunu klonlayın, XCode'da eklenti projesini açın ve çalıştırın. Otomatik olarak kurulacaktır. Formatlayıcı eklentisini kullanmadan önce Xode'u yeniden başlatın.

Daha önce crustify util yüklemeyi unutmayın. Homebrew, örnek için

brew install uncrustify

PS Düzenle> Biçimlendirmeyi kaydettikten sonra "özelliğini Düzenle> Kodu Biçimlendir> BBUncrustifyPlugin Tercihleri> Kaydetme Biçiminde açabilirsiniz

Bu u ;-) için yararlı olacağını umuyoruz



3

CTRL + i

bu kadar.

(hayır COMMAND+ i)


6
Bu zaten 4 kez cevap olarak belirtilmiştir - cevaplamadan önce lütfen diğer cevapları okuyun.
fishin29

Ayrıca, CMD + i, biçimlendirme ile aynı olmayan Ürün -> Profil'e gitmekle aynıdır.
inga

3

ClangFormat kullanmanızı öneririm. Yüklemek için lütfen şu adımları izleyin:

  1. XCode için Alcatraz paket yöneticisini yükleyin Xcode 5+ ve OS X 10.9+ desteği
  2. Kurulumdan sonra XCode'u yeniden başlatın.
  3. XCode'u açın -> Pencere Menüsü -> Paket Yöneticisi
  4. ClangFormat'ı arayın (bulun) ve kurun. Kurulumdan sonra XCode'u yeniden başlatın.
  5. Şimdi XCode menüsünde biçimlendirme için Düzenle -> Clang Biçimi alt menüsünü kullanabilirsiniz.

Farklı biçimlendirme türleri seçebilirsiniz. Ayrıca Save On Save özelliğini etkinleştirerek otomatik formatlama özelliği kazanabilirsiniz.

resim açıklamasını buraya girin


1
Bu, artık XCode 8+ üzerinde mevcut değil
Nathan F.

Evet, haklısın @NathanFiscaletti 7.2'den 9.2'ye yükselttim ve yukarıdaki çözüm artık çalışmıyor. Ama bir çözüm buldum. Yeni bir yazı ekleyeceğim!
csonuryilmaz

Alcatraz'ı yükledim ancak ClangFormat eklentisi artık Xcode 9'da desteklenmiyor. github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz

1

Xcode sürüm 3.x, Crustify ile "Kullanıcı komut dosyası" kullanmalısınız , işte burada bir örnek:

#!/bin/sh

echo -n "%%%{PBXSelection}%%%"
$YOURPATH_TO_UNCRUSTIFY/uncrustify -q -c $YOURPATH_TO_UNCRUSTIFY_CONFIG/CodeFormatConfig.cfg -l OC+
echo -n "%%%{PBXSelection}%%%"

yukarıda Xcode "Kullanıcı Komut Dosyanıza" ekleyin.

Xcode sürüm 4.x ise, bu blogu okumalısınız: Xcode 4'te Kod Biçimlendirme ,

Bu şekilde, "Apple Hizmetleri" kullanılır, ancak yeterince iyi değil, çok yavaş deneyime neden, herkes aynı şey var mı?

neden elma damla "kullanıcı komut dosyası" .... xD


1

İlk olarak, XCode Tercihleri ​​"Girinti" bölümünü inceleyin. Orada işleri biraz özelleştirebilirsiniz ...

Daha hassas taneli kontrol için, Apple'dan XCode Kullanıcı Varsayılanları belgesine bakın . (Görüntülemek için bir geliştirici girişi gerekebilir). Örneğin, terminalde aşağıdakileri girerek "macun girintisini" devre dışı bırakabildim:

defaults write com.apple.XCODE PBXIndentOnPaste No

ayarınızı tekrar okumak için:

defaults read com.apple.XCODE PBXIndentOnPaste

1

Bu yalnızca boşluk boşlukları olmayan diller için çalışır, ancak benim çözümüm boşluklar hariç tüm boşlukları kaldırmak, daha sonra genellikle EOL'yi (ör. ';' Yerine '; \ n') değiştiren karakterlerden sonra bir satırsonu eklemektir. ^ + i çözümü.

Python kullanıyorum.

Örnek kod, sadece dosya adlarını değiştirin:

python -c "import re; open(outfile,'w').write(re.sub('[\t\n\r]','',open(infile).read()).replace(';',';\n').replace('{','{\n').replace('}','}\n'))"

Mükemmel değil (Örnek: döngüler için), ama hoşuma gidiyor.


1

Kaynak kodunuzu ekibinizin tam olarak olmasını istediği gibi kolayca biçimlendirmek için crustify kullanan Xcode Formatter'ı kullanabiliriz.

Kurulum Önerilen yol GitHub projesini klonlamak veya https://github.com/octo-online/Xcode-formatter adresinden indirmek ve Xcode projenize CodeFormatter dizinini eklemek için Xcode kısayol tabanlı kod biçimlendirme: kısayol değiştirilen kaynakları geçerli çalışma alanında biçimlendir otomatik kod biçimlendirme: uygulama tüm kaynakları biçimlendirdiğinde geçerli kaynakları biçimlendirmek için projenize bir inşa aşaması ekleyin biçimlendirme: tüm kodunuzu tek bir komut satırıyla biçimlendirin biçimlendirme kurallarınız proje tarafından paylaşılır: düzenleyin ve aynı yapılandırmayı kullanın proje dev ekibinizle dosya 1) Projeniz için kod formatlayıcı nasıl kurulur? Düzeltme yapmayın En basit yol demlemek kullanmaktır: $ brew install uncrustify

Demlemek için: $ ruby ​​–e “$ (curl –fsSkl raw.github.com/mxcl/homebrew/go)”

Düzeltme özelliğinin / usr / local / bin $ içinde doğrulanmadığını kontrol edin.

Düzeltme sürümünüz 0,60'dan düşükse, modern Objective-C sözdizimi yakın zamanda eklendiğinden manuel olarak yüklemeniz gerekebilir. CodeFormatter dizinini .xcodeproj dosyanızın yanına ekleyin

Xcode uygulamanızın "Xcode" (varsayılan ad) olarak adlandırıldığını kontrol edin Bu adı Uygulamalar / dizininde (veya özel Xcode kurulum dizininizde) görebilirsiniz. Mac'inizde birden fazla Xcode örneği varsa dikkatli olun: projenin gerçekten "Xcode" olarak adlandırıldığından emin olun! (Neden bu? Bu ad şu anda açık olan Xcode dosyalarını bulmak için kullanılır. Bkz. CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript). Automator hizmetini yükleyin Uncrustify_opened_Xcode_sources.workflow Bu dosyayı ~ / Library / Services / klasörünüze kopyalayın (gerekirse bu klasörü oluşturun) Dikkatli olun: .workflow dosyasını çift tıklatarak yükleyeceksiniz ancak dosya kaldırılacak! Diğer kullanıcılar için bir kopyasını bıraktığınızdan emin olun.

Projeyi oluştururken açılan dosyaları biçimlendirme Aşağıdaki satırı içeren bir derleme aşaması "çalıştırma komut dosyası" ekleyin:

sh CodeFormatter / scriptler / formatOpendSources.sh

Komut satırındaki dosyalar nasıl biçimlendirilir

Şu anda açık olan dosyaları biçimlendirmek için formatOpenedSources.sh dosyasını kullanın:

$ sh CodeFormatter / scriptler / formatOpendSources.sh

Tüm dosyaları biçimlendirmek için formatAllSources.sh komutunu kullanın:

$ sh CodeFormatter / scriptler / formatAllSources.sh PATH

PATH, kaynak yolunuzla değiştirilmelidir.

Örneğin; proje adı TestApp ise komut

$ sh CodeFormatter / scriptler / formatAllSources.sh TestApp

projedeki tüm dosyaları arayacak ve tüm dosyaları uncrustify_objective_c.cfg dosyasında yapılandırıldığı şekilde biçimlendirecektir.

Formatlayıcı kurallarını değiştirme

CodeEmatter / uncrustify_objective_c.cfg dosyasını TextEdit ile açın


0

Kolay bir yol arıyordum. Ve ortam üzerinde öğrenin .

Önce json metnini kopyalayın ve jsonlint veya benzeri bir şeyle doğrulayın . Sonra jsonlint'ten kopyalamak için zaten json biçimlendirilir. Ve biçimini koruyarak ile Xcode üzerinde kodu yapıştırın kısayol shift+ option+ command+v


-1

Bu yoldaki herhangi bir kısayolu görebilir ve değiştirebilirsiniz: Xcode -> Tercihler -> Anahtar Bağlantıları.

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.