Bisakah Textmate membuat indentasi HTML dengan baik?

17

Apakah Textmate memiliki fungsi untuk membuat indentasi HTML dengan baik?

HTML Tidy indentasinya - tetapi tampaknya juga menghapus tag. (Ini bukan HTML yang sepenuhnya tepat, tapi tetap saja!)

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
    <head>
        <title></title>
    <script type="text/javascript" src="http://www.speechapi.com/static/lib/swfobject.js"></script>
    <script type="text/javascript" src="http://www.speechapi.com/static/lib/speechapi-1.1.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<body>
    <!-- All above disappears -->       
    <p>Test</p>
    <!-- All below disappears-->
</body>
</html>
Casebash
sumber
Bisakah Anda memberikan contoh html di mana tag dihapus karena ini mengejutkan
user151019
@ Mark: Diperbarui dengan kode
Casebash
@Casebash Saya mencoba Tidy dengan kode Anda dan bagi saya itu hanya menambahkan tag. copypastecode.com/46216
Robert S Ciaccio
@calvera: Pastikan jenis dokumen Anda disetel ke HTML, bukan teks biasa
Casebash
3
@Casebash: itu diatur ke html ... FYI, dari apa yang saya ingat tentang plugin Tidy untuk Notepad ++, itu dikonfigurasi melalui file teks. Jadi mungkin ada yang salah dengan konfigurasi Tidy.
Robert S Ciaccio

Jawaban:

20

Anda dapat menekan + Auntuk memilih semua Text->Indent Selection.

James Moore
sumber
Bertahun-tahun dari TextMate dan tidak pernah melihat atau menggunakan fitur ini ... \ o /
brasofilo
Sayangnya ini bukan format XML lengkap: ini membuat baris yang salah diindentasi dan tidak membagi tag pada baris yang sama ke baris yang berbeda. Menggunakan Textmate 2.0-rc.4.
Alexander Klimetschek
13

Anda bisa menggunakan Bundles > HTML > Tidyatau cara pintas ctrl+ + H.

Loïc Wolff
sumber
3
Tidy tidak hanya membuat indentasi - tetapi juga menghapus bagian-bagiannya!
Casebash
1
Pertanyaan adalah tentang indentasi tidak merapikan
tig
Merapikan juga gagal ketika ada beberapa masalah seperti nama elemen yang tidak dikenal.
Alexander Klimetschek
1

Saya ingin menunjukkan sesuatu yang sedikit melintasi jawaban lainnya:

Jika Anda memilih teks yang ingin Anda format (atau reindent), TextMate akan menerapkan tindakan spesifik hanya untuk itu. Jadi, jika Anda CMD+ Adokumen Anda dan kemudian menerapkan Tidy (baik dari Bundel> menu HTML atau dengan CTRL+ SHIFT+ Hpintas) sebagian besar hanya akan melakukan indentasi, melewatkan peringatan pada validasi (yang kadang-kadang tidak perlu karena kita mungkin bekerja pada snippet halaman ).

mcdado
sumber
0

Anda dapat menggunakan Xcode atau Dashcode sebagai gantinya jika Anda menginstal Alat Pengembang. Mereka datang gratis pada cakram instal yang menyertai komputer Anda. Saya percaya baik Xcode dan Dashcode memiliki penyorotan sintaksis.

Jika Anda ingin perangkat lunak yang sangat bagus, dapatkan Coda. Agak mahal di $ 100, tapi saya pasti akan mengatakan itu layak. Memiliki penyorotan sintaksis dan pelengkapan otomatis (sebagian besar untuk saya).

daviesgeek
sumber
0

Iya. Panggilan Tidy di bundel HTML bawaan TextMate dapat menangani HTML Anda.

Bundel TextMate -> HTML -> Tidy menghasilkan:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
    <head>
        <title></title>
        <script type="text/javascript" src="http://www.speechapi.com/static/lib/swfobject.js">
</script>
        <script type="text/javascript" src="http://www.speechapi.com/static/lib/speechapi-1.1.js">
</script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
    </head>
    <body>
        <!-- All above disappears -->
        <p>
            Test
        </p><!-- All below disappears-->
    </body>
</html>

Pada kode sampel Anda. Tidak ada yang hilang. Anda juga mendapatkan peringatan berikut:

line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 5 - Warning: <body> isn't allowed in <head> elements
line 1 column 1 - Warning: <html> proprietary attribute "xmlns:tal"
line 1 column 1 - Warning: <html> proprietary attribute "xmlns:metal"
Ian C.
sumber
0

Masalah yang saya alami dengan solusi built-in Text -> Indent Selectionatau Tidy adalah tidak dapat bekerja dengan baik dengan kode HTML parsial. Ini misalnya penting ketika mengedit di WordPress atau bekerja dengan parsial di Ruby on Rails.

Solusi yang bekerja untuk saya adalah menambahkan perintah ke bundel dengan skrip Perl kustom oleh John Watson yang saya temukan di sini: http://snipplr.com/view.php?codeview&id=28256

Jessie Dedecker
sumber