Pemformatan otomatis sumber xcode

179

Sebagai pengembang C #, saya menjadi sangat tergantung pada pemformatan otomatis di Visual Studio 2008. Secara khusus, saya akan menggunakan CTRL+ K, Dpintasan keyboard untuk memaksa semuanya kembali ke bentuk semula setelah implementasi saya yang ceroboh.

Saya sekarang mencoba untuk belajar Objective-C dan saya kehilangan fitur-fitur tertentu dalam Xcode, tetapi mungkin tidak ada yang cukup menyakitkan seperti cara pintas pemformatan. Pencarian Google saya tidak menghasilkan apa-apa di dalamnya, meskipun tampaknya ada beberapa peretasan. Apakah saya kehilangan sesuatu atau apakah fitur ini tidak ada secara asli di Xcode?

jslatts
sumber
1
Ada beberapa tautan yang baik ke solusi skrip Xcode dalam jawaban untuk pertanyaan SO
nall
Terima kasih untuk tautannya. Saya menemukan ini juga: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode Pada dasarnya mencakup teknik yang sama dengan tautan Anda. Saya akan mencobanya dan melihat seberapa baik kerjanya.
jslatts
1
Solusi pihak ketiga menggunakan UniversalIndentGUI: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode
jslatts
Mirip dengan pertanyaan ini; answer memiliki item menu dan pintasan keyboard untuk memasukkan kembali kode: stackoverflow.com/questions/3558709/…
Basil Bourque
2
Adakah inovasi dari Apple dalam 5 tahun terakhir ini? Apakah pertanyaan ini masih relevan atau apakah XCode sekarang merupakan solusi baru dan lebih baik untuk memformat kode?
mm24

Jawaban:

134

Sayangnya, Xcode tidak memiliki apapun yang hampir seluas seperti yang tersedia VS atau Jalopy untuk Eclipse. Ada beberapa fitur yang berbeda, seperti Structure > Re-Indentjuga pemformatan otomatis yang digunakan ketika Anda menempelkan kode ke file sumber Anda. Aku benar-benar bersamamu; ada pasti harus ada sesuatu di sana untuk membantu dengan masalah format.

Marc W
sumber
3
Terima kasih, setidaknya saya tahu saya tidak melewatkan sesuatu. Identifikasi otomatis memang membantu menghilangkan rasa sakit, tapi saya harus mencari solusi pihak ketiga.
jslatts
5
ini seharusnya tidak dipilih sebagai jawabannya. jawaban di bawah ini dari @ken benar
Ryan Angilly
@RyanAngilly Perhatikan tahun pertanyaan ini dijawab. Banyak hal telah berubah dengan Xcode sejak saat itu. ;-)
Marc W
1
@RyanAngilly ken hanya menjelaskan cara indentasi otomatis. Bukan itu yang dimaksud "format" (dengan ruang putih dan penambahan dan penghapusan baris baru serta hal-hal semacam itu).
dergab
5
Indentasi dapat diperbaiki dengan control-i, yang akan indent semua baris yang dipilih.
zaph
427

Itu Ctrl+ i.

Atau untuk teknologi rendah, potong lalu tempel. Ini akan diformat ulang pada tempel.

Ken
sumber
Terima kasih! Itu sangat membantu, terutama karena menu tidak benar-benar menunjukkan pintasan keyboard.
jslatts
37
Tapi ini hanya lekukan. Bagaimana dengan memindahkan kawat gigi, merawat jeda baris, dll?
Peter Ajtai
14
Seharusnya tidak diterima karena tidak melakukan semua hal yang akan ditangani oleh pemformat kode. Itu hanya indentasi ulang,
powerj1984
1
Tip yang bagus. Lame ekstra yang XCode tidak punya ini.
AndrewK
4
ya @ powerj1984. Saya juga kecewa dengan ini. Itu tidak menambah ruang yang tepat setelah ,, =atau operator lain. Apa yang dilakukannya hanya niat. Tidak ada lagi. Mac benar-benar perlu belajar dari Microsoft di sini.
shashwat
35

Saya ingin merekomendasikan dua opsi yang patut dipertimbangkan. Keduanya cukup baru dan berkembang.

ClangFormat-Xcode (gratis) - pada setiap file cmd + diformat ulang ke gaya tertentu dan disimpan, mudah digunakan dalam tim

Plug-in Xcode untuk memformat kode Anda menggunakan alat format Dentang, oleh @travisjeffery.

Dengan format dentang, Anda dapat menggunakan Dentang untuk memformat kode Anda ke gaya seperti LLVM, Google, Chromium, Mozilla, WebKit, atau konfigurasi Anda sendiri.

Objective-Clean (berbayar, belum mencobanya) - galat peningkatan penggalangan aplikasi jika aturan gaya yang telah ditentukan dilanggar - mungkin cukup sulit untuk digunakan dalam tim, jadi saya tidak mencobanya.

Dengan pengaturan yang sangat minim, Anda bisa mendapatkan Xcode untuk menggunakan Aplikasi kami untuk menegakkan aturan Anda. Jika Anda ketahuan melanggar salah satu aturan Anda, Xcode akan melempar kesalahan build dan membawa Anda langsung ke jalur yang menyinggung.

matm
sumber
Bagaimana Anda membuat konfigurasi format sendiri dengan plugin ini?
nbro
27

Dalam xcode, Anda dapat menggunakan pintasan ini untuk indentasi ulang kode sumber Anda

Buka file, yang memiliki masalah indentasi, dan ikuti ini:

  • Cmd+ Auntuk memilih semua kode sumber

  • Ctrl+ Iuntuk membuat ulang indentasi

Semoga ini membantu.

Nguyen Minh Binh
sumber
18

Wantabe favorit saya PrettyC tidak akurat: http://uncrustify.sourceforge.net/ . Namun ada beberapa miliar opsi jadi saya sarankan Anda mengunduh UniversalIndentGUI_macx, (juga di sourceforge) GUI yang ditulis seseorang untuk membantu mengatur opsi sesuai keinginan Anda.

Anda kemudian dapat menambahkan skrip pengguna khusus ini untuk tidak mempercayai teks yang dipilih:

#! /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}%%%"
geowar
sumber
Saya mengalami masalah dengan unrustify, terutama dengan memformat blok.
Liron Yahdav
12

Anda dapat menggunakan Command+ Auntuk memilih semua konten dan Ctrl+ berikutnya Iuntuk memformat konten yang dipilih.

Paweł Walaszek
sumber
9

Saya juga merasa xcode seharusnya memiliki fungsi ini. Jadi saya membuat ekstensi untuk melakukannya: Swimat

Instal sederhana dengan brew cask install swimat pratinjau

Anda dapat mencobanya, lihat https://github.com/Jintin/Swimat untuk informasi lebih lanjut.

Jintin
sumber
8

Cmd A + Ctrl I

Atau Cmd AKemudian Klik Kanan . Struktur Goto -> Re-Indent

yuvi
sumber
6

Pertimbangkan untuk membeli sendiri lisensi untuk AppCode , IDE Objective-C cerdas yang membantu pengembang iOS / OS X. AppCode sepenuhnya kompatibel dengan Xcode, tetapi melampaui Xcode dalam menambahkan fitur-fitur canggih .

AppCode varian Objective-C dari IDE Intellij IDEA dari JetBrains . Mereka juga merupakan penulis ekstensi ReSharper yang populer ke Visual Studio, yang tujuan utamanya dari sini seperti upaya putus asa untuk menghadirkan sentuhan pengalaman IDEA ke produk Microsoft.

AppCode menggunakan penganalisa kode sendiri yang memberikan dukungan navigasi ulang kode dan nyaris sempurna. Ada kemampuan untuk inden kembali dan sepenuhnya memformat ulang kode juga (walaupun saya masih kehilangan beberapa pengaturan format dalam kasus-kasus sulit, tetapi sebagian besar itu berfungsi dengan baik).

Anda dapat mencoba versi uji coba, tentu saja.

Jazzcat
sumber
4

Anda dapat mencoba plugin XCode itu https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Cukup gandakan repositori github, buka proyek plugin di XCode dan jalankan. Ini akan diinstal secara otomatis. Mulai ulang Xode sebelum menggunakan plugin formatter.

Jangan lupa untuk menginstal util yang tidak dapat dipercaya sebelumnya. Homebrew, untuk exmaple

brew install uncrustify

PS Anda dapat mengaktifkan fitur "setelah menyimpan pemformatan" di Edit> Format Kode> BBUcrustifyPlugin Preferensi> Format Saat Menyimpan

Semoga ini bermanfaat bagi Anda ;-)

romanvbabenko
sumber
3

CTRL + i

itu dia.

(tidak COMMAND+ i)

LianY
sumber
6
Ini telah disebutkan sebagai jawaban 4 kali - harap baca jawaban lain sebelum menjawab.
Fishinear
Juga, CMD + i sama dengan pergi ke Produk -> Profil yang tidak sama dengan memformat.
inga
3

Saya sarankan menggunakan ClangFormat. Untuk menginstal, ikuti langkah-langkah ini:

  1. Instal manajer paket Alcatraz untuk XCode Mendukung Xcode 5+ & OS X 10.9+
  2. Setelah instalasi, restart XCode.
  3. Buka XCode -> Window Menu -> Package Manager
  4. Cari (temukan) ClangFormat dan instal. Setelah instalasi kembali restart XCode.
  5. Sekarang di menu XCode Anda dapat menggunakan Edit -> submenu Format Dentang untuk memformat.

Anda dapat memilih berbagai jenis pemformatan. Juga dengan mengaktifkan Format Pada Simpan Anda dapat memperoleh kemampuan format-otomatis.

masukkan deskripsi gambar di sini

csonuryilmaz
sumber
1
Ini tidak lagi tersedia di XCode 8+
Nathan F.
Ya, Anda benar @NathanFiscaletti Saya telah memutakhirkan dari 7.2 menjadi 9.2 dan solusi di atas tidak berfungsi lagi. Tetapi saya menemukan solusinya. Saya akan menambahkan posting baru!
csonuryilmaz
Saya menginstal Alcatraz tetapi plugin ClangFormat tidak lagi didukung pada Xcode 9. github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz
1

Jika Xcode versi 3.x Anda, Anda harus menggunakan "Skrip Pengguna" Dengan Uncrustify , di sini ini Contoh:

#!/bin/sh

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

tambahkan di atas ke "Kode Pengguna" Xcode Anda.

jika Xcode versi 4.x, saya pikir Anda harus membaca blog ini: Pemformatan Kode di Xcode 4 ,

Dengan cara ini, menggunakan "Layanan Apple", tetapi itu tidak cukup baik, menyebabkan pengalaman terlalu lambat, apakah ada yang punya hal yang sama?

mengapa apple drop "skrip pengguna" .... xD

poplax
sumber
1

Pertama, Periksa bagian XCode Preferences "Indentation". Anda dapat menyesuaikan banyak hal di sana ...

Untuk kontrol berbutir halus, lihat dokumen XCode User Defaults dari apple. (Mungkin memerlukan login pengembang untuk melihatnya). Sebagai contoh, saya dapat menonaktifkan "indent on paste" dengan memasukkan yang berikut di terminal:

defaults write com.apple.XCODE PBXIndentOnPaste No

untuk membaca kembali pengaturan Anda:

defaults read com.apple.XCODE PBXIndentOnPaste
Steve
sumber
1

Ini hanya berfungsi untuk bahasa dengan bukan spasi putih yang ditentukan, tetapi solusi saya adalah menghapus semua spasi putih kecuali spasi, kemudian menambahkan baris baru setelah karakter yang biasanya menggambarkan EOL (misalnya ganti ';' dengan ';' dengan '; \ n') kemudian lakukan di mana-mana ^ + i solusi.

Saya menggunakan Python.

Contoh kode, ganti saja nama file:

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

Itu tidak sempurna (Contoh: untuk loop), tapi saya suka itu.

blerbl
sumber
1

Kita dapat menggunakan Xcode Formatter yang menggunakan uncrustify untuk dengan mudah memformat kode sumber Anda seperti yang diinginkan oleh tim Anda !.

Instalasi Cara yang disarankan adalah mengkloning proyek GitHub atau mengunduhnya dari https://github.com/octo-online/Xcode-formatter dan menambahkan direktori CodeFormatter dalam proyek Xcode Anda untuk mendapatkan: Pemformatan kode berbasis-Xcode: jalan pintas ke format sumber yang dimodifikasi dalam pemformatan kode otomatis ruang kerja saat ini: tambahkan fase pembangunan ke proyek Anda untuk memformat sumber saat ini ketika aplikasi membangun semua pemformatan sumber: format semua kode Anda dengan satu baris perintah aturan pemformatan yang dibagikan oleh proyek: edit dan gunakan konfigurasi yang sama file dengan tim pengembang proyek Anda 1) Cara mengatur pemformat kode untuk proyek Anda Instal uncrustify Cara paling sederhana adalah menggunakan brew: $ brew install uncrustify

Untuk menginstal brew: $ ruby ​​–e “$ (curl –fsSkl raw.github.com/mxcl/homebrew/go)”

Periksa apakah uncrustify berada di / usr / local / bin $ yang uncrustify

Jika versi uncrustify Anda lebih rendah dari 0,60, Anda mungkin harus menginstalnya secara manual karena sintaks Objective-C modern telah ditambahkan baru-baru ini. Tambahkan direktori CodeFormatter di sebelah file .xcodeproj Anda

Periksa apakah aplikasi Xcode Anda bernama "Xcode" (nama default) Anda dapat melihat nama ini di direktori Applications / (atau direktori instalasi Xcode kustom Anda). Berhati-hatilah jika Anda memiliki beberapa instance Xcode di mac Anda: pastikan bahwa proyek itu benar-benar bernama "Xcode"! (Kenapa ini? Nama ini digunakan untuk menemukan file Xcode yang sedang dibuka. Lihat CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript). Instal layanan automator Uncrustify_opened_Xcode_sources.workflow Salin file ini ke folder ~ / Library / Services / (buat folder ini jika perlu). Hati-hati: dengan mengklik dua kali file .workflow, Anda akan menginstalnya tetapi file tersebut akan dihapus! Pastikan untuk meninggalkan salinannya untuk pengguna lain.

Cara memformat file yang dibuka saat membangun proyek. Tambahkan "build script" fase pembuatan yang berisi baris berikut:

sh CodeFormatter / scripts / formatOpendSources.sh

Cara memformat file di baris perintah

Untuk memformat file yang saat ini dibuka, gunakan formatOpenedSources.sh:

$ sh CodeFormatter / scripts / formatOpendSources.sh

Untuk memformat semua file, gunakan formatAllSources.sh:

$ sh CodeFormatter / scripts / formatAllSources.sh PATH

PATH harus diganti oleh jalur sumber Anda.

Misalnya; jika nama proyek adalah TestApp maka perintahnya adalah

$ sh CodeFormatter / scripts / formatAllSources.sh TestApp

itu akan mencari semua file dalam proyek dan akan memformat semua file yang dikonfigurasi dalam file uncrustify_objective_c.cfg.

Bagaimana mengubah aturan formatter

Edit CodeFormatter / uncrustify_objective_c.cfg buka dengan TextEdit

Ajeet Sharma
sumber
0

Ya saya sedang mencari cara yang mudah. Dan cari tahu di media .

Pertama untuk menyalin teks json dan memvalidasinya pada jsonlint atau yang serupa. Kemudian untuk menyalin dari jsonlint, json sudah diformat. Dan rekatkan kode pada Xcode dengan mempertahankan format, pintasan shift+ option+ command+v

Shad
sumber
-1

Anda dapat melihat dan mengubah pintasan apa pun di jalur ini: Xcode -> Preferences -> Binding Kunci.

erdikanik
sumber