Bagaimana cara indentasi kode pada editor Atom?

393

Bagaimana Anda indentasi kode Anda di editor Atom? Di editor lain, Anda biasanya dapat memilih beberapa kode dan membuat inden secara otomatis.

Apakah ada pintasan keyboard juga?

Anders
sumber

Jawaban:

664

Saya menemukan opsi di menu, di bawah Edit> Lines> Auto Indent. Tampaknya tidak memiliki ikatan keymap default.

Anda dapat mencoba menambahkan pemetaan kunci (Atom> Buka Keymap Anda [pada Windows: File> Pengaturan> Keybindings> "file keymap Anda"]) seperti ini:

'atom-text-editor':
  'cmd-alt-l': 'editor:auto-indent'

Ini bekerja untuk saya :)


Untuk Windows:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'
Nacho L.
sumber
1
Terima kasih! Akan lebih baik jika melakukan inti: pilih-baik saja sebelumnya, tetapi tidak ada petunjuk tentang cara skrip itu.
doobdargent
3
@doobdargent Saya membuat pertanyaan dengan jawaban tentang cara membuat dua perintah menjadi perintah baru di sini: stackoverflow.com/questions/24456995/…
Lee
15
Anda juga dapat cmd + shift + pdan mencariEditor: Auto Indent
codingninja
1
Saya menemukan cara untuk mengikat pendekatan ini dengan "Pilih Semua" terlebih dahulu (dan kemudian kembalikan pilihan awal setelah), sehingga Anda dapat melakukan semuanya dalam satu tekan tombol - lihat jawaban saya di bawah ini. stackoverflow.com/a/33927654/398630
BrainSlugs83
4
Untuk ubuntu, [Edit> Open Your Keymap] nya. Dan seperti ctrl-alt-lpintasan default ubuntu untuk layar kunci, saya memetakan ctrl-shift-]untuk sekarang.
vusan
91

Jawaban yang diterima berfungsi, tetapi Anda harus melakukan "Pilih Semua" terlebih dahulu - setiap saat - dan saya terlalu malas untuk itu.

Dan ternyata, itu bukan super sepele - saya pikir saya akan memposting ini di sini dalam upaya untuk menyelamatkan individu yang berpikiran sama 30 menit yang dibutuhkan untuk melacak semua ini. - Juga perhatikan: pendekatan ini mengembalikan seleksi awal ketika sudah selesai (dan itu terjadi sangat cepat, Anda bahkan tidak melihat seleksi itu pernah berubah).

1.) Pertama, tambahkan perintah khusus ke skrip init Anda (File-> Buka Skrip Init Anda, lalu tempel ini di bagian bawah):

atom.commands.add 'atom-text-editor', 'custom:reformat', ->
    editor = atom.workspace.getActiveTextEditor();
    oldRanges = editor.getSelectedBufferRanges();
    editor.selectAll();
    atom.commands.dispatch(atom.views.getView(editor), 'editor:auto-indent')
    editor.setSelectedBufferRanges(oldRanges);

2.) Bind "custom: reformat" ke kunci (File-> Buka Keymap Anda, lalu tempel ini di bagian bawah):

'atom-text-editor':
    'ctrl-alt-d': 'custom:reformat'

3.) Mulai Ulang Atom (skrip init.coffee hanya berjalan saat atom pertama kali diluncurkan).

BrainSlugs83
sumber
Menarik. Saya tidak yakin saya ingin secara otomatis indentasi semuanya. Built-in memungkinkan untuk membuat indentasi seleksi. Anda bisa berargumen, bahwa lekukan yang tepat selalu sesuatu, yang harus dimiliki.
Zelphir Kaltstahl
2
@ Zelphir Saya biasanya punya satu keybinding untuk pemilihan indent, dan keybinding lainnya untuk indent semua. - Saya tidak sering menggunakan indentasi, tapi senang memilikinya saat Anda membutuhkannya.
BrainSlugs83
@ BrainSlugs83 Mungkin sedikit offtopic: Saya perhatikan ada masalah ketika mencoba bahasa indentasi otomatis, yang tidak menggunakan tanda kurung untuk menandai blok kode dan memungkinkan untuk mendefinisikan fungsi atau kelas di dalam yang lain. Editor tidak dapat mengetahui apa yang ada di level mana dalam kasus-kasus itu.
Zelphir Kaltstahl
2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowmenambahkan kondisi ini hanya editor.selectAll();akan memungkinkan indentasi pemilihan. Jika tidak ada pilihan, itu akan membuat indentasi seluruh file.
manish_s
1
Jika Anda ingin memiliki satu langkah undo untuk seluruh perintah, tambahkan ini setelah mendefinisikan editor: checkpoint = editor.createCheckpoint();dan ini di akhir:editor.groupChangesSinceCheckpoint(checkpoint);
Dan
43

Paket indentasi ada untuk menerapkan indentasi otomatis ke seluruh file dengan pintasan ini :

ctrl+ shift+i

atau

cmd+ shift+i

Url paket: https://atom.io/packages/auto-indent

fhcoso
sumber
Saya rasa perlu pembaruan - tidak berfungsi untuk saya. Menggunakan panggilan yang sudah tidak digunakan lagi ke API
Dean_Wilson
1
Sebaliknya saya mengunduh dan menginstal secara manual dari github.com/griiin/atom-auto-indent dan sekarang tampaknya berfungsi ...
Dean_Wilson
Catatan: ini menggunakan 1 tab indentasi secara default: /
King's badge
24

Saya lebih suka menggunakan atom-beautify, CTRL+ ALT+ B(di linux, mungkin di windows juga) menangani jenis format yang lebih baik dan juga dapat disesuaikan per format file.

lebih detail di sini: https://atom.io/packages/atom-beautify

ungalcrys
sumber
Dengan ranting itu menambah ruang untuk pathfungsi sehingga rute tidak dapat ditemukan
Rodolfo Velasco
Saya pikir ini adalah solusi paling sederhana dan bersih. Terima kasih.
Alessandro
17

Anda bisa dengan cepat membuka palet perintah dan melakukannya di sana
Cmd + Shift + pdan mencari Editor: Auto Indent:

tangkapan layar

codingninja
sumber
10
Itu tidak cepat jika Anda adalah pengguna yang kuat :)
Jad Joubran
5

Ini bekerja untuk saya:

'atom-workspace atom-text-editor':
    'ctrl-alt-a': 'editor:auto-indent'

Anda harus memilih semua dengan ctrl-a terlebih dahulu.

dave doe
sumber
2

Jika Anda memiliki masalah dengan hotkeys, mencoba untuk membuka Key Binding Resolver Windowdengan Cmd + .. Ini akan menunjukkan Anda tombol yang Anda tekan dalam waktu nyata.

Misalnya, Cmd + Shift + 'sebenarnyaCmd + "

Dmitriy
sumber
2

Di Linux

(diuji dalam KDE Ununtu)

Ada opsi di menu, di bawah Edit> Lines> Auto Indent atau tekan Cmd + Shift + p, cariEditor: Auto Indent dengan memasukkan "ai"

Catatan: Di KDE ctrl-alt-lsudah diatur secara global untuk "layar kunci" jadi lebih baik digunakanctrl-alt-i .

Anda dapat menambahkan pemetaan kunci dalam Atom:

  • Cmd + Shift + p, cari "Pengaturan Tampilan: Tampilkan Kunci Kontak"
  • klik pada "file keymap Anda"
  • Tambahkan bagian di sana seperti ini:

     'atom-text-editor':
        'ctrl-alt-i': 'editor:auto-indent'
    

Jika indentasi tidak berfungsi, itu bisa menjadi alasan, bahwa akhiran file tidak dikenali oleh Atom. Tambahkan dukungan untuk bahasa Anda kemudian, misalnya untuk "Lua" instal paket "bahasa-lua".

Jika File tidak dikenali untuk bahasa Anda:

  • buka ~/.atom/config.csonfile (dengan CTRL + SHIFT + p: ketik `` open config '')
  • tambahkan / edit customFileTypesbagian di bawah coremisalnya seperti berikut ini:

    core:
      customFileTypes:
        "source.lua": [
          "conf"
        ]
        "text.html.php": [
          "thtml"
        ]
    

(Anda menemukan nama lingkup bahasa ("source.lua", "text.html.php" ...) di pengaturan paket bahasa lihat di sini )

rubo77
sumber
0

Anda juga dapat mencoba menambahkan penyihir pemetaan kunci secara otomatis pilih semua kode dalam file dan indentasi:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'
Hristian Yordanov
sumber
@IB Cobalah dengan 'atom-text-editor': 'ctrl-alt-l': 'editor: auto-indent' Sebelum menekan pintasan pilih semua teks dalam file.
Hristian Yordanov
0

Saya sedang mengerjakan beberapa kode asyik, yang tidak memformat otomatis pada save. Apa yang saya lakukan adalah klik kanan pada panel kode, lalu pilih ESLint Fix. Itu memperbaiki indentasi saya.

masukkan deskripsi gambar di sini

Jeff Lowery
sumber