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>

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.


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.


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 ).


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).


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"

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.