Bagaimana cara memperbaiki / mengubah lekukan ruang dalam Teks Luhur?


228

Contoh: Jika saya memiliki dokumen dengan 2 indentasi spasi, dan saya ingin memiliki 4 indentasi spasi, bagaimana cara saya secara otomatis mengubahnya dengan menggunakan editor Teks Sublime?

Jawaban:


525

Berikut ini adalah trik yang rapi dalam Sublime Text 2 atau 3 untuk mengubah spasi indentasi Anda dalam dokumen.

TL; DR:

Mengubah dari 2 spasi menjadi 4 spasi:

Pastikan lebar tab diatur ke 2. Konversi lekukan 2-ruang Anda menjadi tab, alihkan ke lebar tab 4, lalu konversikan lekukan kembali ke spasi.

Penjelasan rinci:

Pergi ke:

View -> Indentation

Itu harus membaca:

  • Indent using spaces [x]
  • Tab width: 2

Pilih:

  • Convert Indentation to Tabs

Kemudian Pilih:

  • Tab width: 4
  • Convert Indentation to Spaces

Selesai


5
Terima kasih! : D Disimpan banyak waktu. Catatan. Anda juga dapat melakukan "find: space-space => select all => tab"
Automatico

11
Saya membuat Makro untuk agung yang melakukan semua ini untuk Anda gist.github.com/joshmfrankel/5707020 . Selamat menikmati :-)
Josh Frankel

2
Saya ingin menunjukkan bahwa "Konversi Indentasi ke Spasi" juga berfungsi jika Anda memiliki file teks di mana tab tidak mengambil seluruh lebar tab. Katakanlah, untuk file di mana penulis menggunakan tab untuk memformat kolom, jadi jika Anda ingin menemukan dan mengganti tab, kolom yang dihasilkan tidak lagi akan berbaris. Menggunakan "Konversi Indentasi ke Spasi" akan membuatnya tetap berbaris dengan benar
Joe Pinsonault

Saya juga membuat makro dan contoh keybindings untuk ini untuk rekan kerja sebelum saya melihat makro Josh. Milik
Beau

74

Saya sebenarnya menemukan bahwa kewarasan saya lebih baik untuk menentukan preferensi pengguna seperti:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

Ini detect_indentation: falsesangat penting, karena memaksa Sublime untuk menghormati pengaturan ini di setiap file, yang bertentangan dengan View -> Indentationpengaturan.

Jika Anda ingin menjadi mewah, Anda juga dapat menentukan pintasan keyboard untuk secara otomatis mengindentasi ulang kode Anda (YMMV) dengan menempelkan yang berikut di Sublime -> Preferences -> Key Binding - User:

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

dan untuk memvisualisasikan spasi putih:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],

9

Dalam benak saya, saya menemukan solusi yang lebih sederhana daripada Magne:

Di mac:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

Pada windows atau platform lain berubah cmd+fdan alt+enterdengan apa pun hotkey finddan Anda select all.

Catatan: metode ini rentan terhadap "kesalahan" jika Anda memiliki lebih dari satu ruang dalam kode Anda. Dengan demikian kurang aman daripada metode Magne, tetapi lebih cepat (setidaknya bagi saya).


Saya tidak bisa mendapatkan ini berfungsi seperti itu, tapi saya menggunakan prinsip dan hanya melakukan mencari dan mengganti (cmd-option-F di Mac) dan mengganti "" (4 spasi) dengan "" (2 spasi). Dan itu berhasil!
evanbikes

Saya telah menemukan cara lain untuk melakukan ini sekarang, tetapi itu khusus bahasa. Jika Anda memiliki format-plugin seperti itu RubyFormatmaka Anda dapat dengan mudah mengatur ukuran tab yang diinginkan dan kemudian melakukan memformat ulang kode. Dalam hal RubyFormatitu akan terjadi cmd+shift+R.
Otomatis

7

Sementara banyak saran berfungsi saat mengonversi 2 -> 4 ruang. Saya mengalami beberapa masalah saat mengonversi 4 -> 2.

Inilah yang akhirnya saya gunakan:

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]

5

Jika Anda menemukan pencarian dan penggantian yang lebih cepat untuk digunakan, Anda dapat menggunakan penggantian regex seperti ini:

Temukan (regex): (^|\G) {2}(Alih-alih "{2}" <space>{2} Anda bisa menulis dua spasi. Gunakan di sini untuk kejelasan.)

Ganti dengan 4 spasi, atau apa pun yang Anda inginkan \t.


5

Saya menulis sebuah plugin untuk itu. Anda dapat menemukannya di sini atau mencari "ReIndent" di kontrol paket. Sebagian besar melakukan hal yang sama seperti yang ditulis Kyle Finley tetapi dengan cara yang mudah dengan pintasan untuk mengkonversi antara 2 dan 4 dan sebaliknya.


2

Anda harus menambahkan kode ini ke binding kunci khusus Anda:

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

dengan menekan ctrl + f12, file itu akan di-reindent ke ukuran tab 4. jika Anda menginginkan ukuran tab yang berbeda, Anda cukup mengubah angka "value". Formatnya adalah json sederhana.


Saya suka terima kasih! Saya menambahkan 2 dan 4 seperti ini:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

Hal termudah yang saya lakukan adalah,

mengubah Indentasi saya ke Tab

dan itu menyelesaikan masalah saya.

Anda dapat melakukan hal yang sama,

ke Spaces

serta sesuai kebutuhan Anda.

Menyebutkan snapshot yang sama.

masukkan deskripsi gambar di sini


Ya, tetapi pertanyaannya menanyakan situasi ketika Anda berdua memulai dan mengakhiri dengan indentasi sebagai spasi.
Magne

0

Baru-baru ini saya menghadapi masalah yang sama. Saya menggunakan editor luhur. ini bukan masalah dengan kode tetapi dengan editor.

Di bawah ini perubahan dalam pengaturan preferensi bekerja untuk saya.

Menu Teks Sublim -> Preferensi -> Pengaturan: Khusus Sintaksis :

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
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.