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?

Magne
sumber

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

Magne
sumber
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],
Brian Gerstle
sumber
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).

Otomatis
sumber
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" }
]
Kyle Finley
sumber
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.

Qtax
sumber
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.

kamilkp
sumber
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.

patricia bezek
sumber
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

Kamu Menakjubkan
sumber
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
}
Ajay
sumber