Bagaimana cara menghapus spasi spasi di Eclipse secara otomatis?

422

Pertanyaannya memiliki dua bagian, yang salah satunya sudah saya jawab.

  1. Bagaimana cara menghapus spasi spasi trailing dari seluruh file yang sedang diedit ? -> Jawab: gunakan plugin AnyEdit , yang dapat diatur untuk melakukan itu pada setiap save ke file.
  2. Bagaimana cara menghapus spasi spasi hanya dari garis yang saya ubah ? -> Ini saya tidak tahu dan akan menghargai bantuan apa pun.
Jan Żankowski
sumber
97
Saya akan senang jika saya bisa meyakinkan Eclipse untuk berhenti menambahkan spasi putih yang tidak saya ketikkan.
divegeek
5
Anda tidak perlu plugin. Cukup gunakan C ++ -> Editor -> Simpan Tindakan. Juga Umum -> Editor -> Editor Teks -> Tampilkan karakter spasi putih (klik untuk pengaturan detail) sangat berguna.
Trass3r
3
Tindakan penyimpanan default tidak memotong jejak spasi putih di komentar Java Doc. Juga, ini dibatasi oleh fakta bahwa itu hanya bekerja pada file Java. Kami memiliki sistem peninjauan kode yang menandai semua spasi putih sebagai kesalahan. AnyEdit sangat berharga untuk menjaga spasi spasi tambahan untuk semua jenis file. Juga, mungkin berguna untuk menemukan batasan apa yang dimiliki perusahaan Anda untuk perangkat lunak bagian ketiga. Plugin AnyEdit memiliki Lisensi EPL ( opensource.org/licenses/eclipse-1.0.php ) [Dari sini: andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal
1
Saya tidak tahu mengapa tiba-tiba ruang putih di ujung garis dihapus, sampai saya melihat pertanyaan Anda dan mengetahui itu karena AnyEditPlugin. Terima kasih!
Tzafrir

Jawaban:

142
  1. Menghapus spasi putih dari seluruh file yang sedang diedit :

Preferences-> Java-> Editors-> Save Actions-> centang Perform the selected actions on save-> centang Additional actions-> klik Configure..-> buka Code organizingtab -> centang Remove trailing whitespace-> pilih All lines.

  1. Menghapus spasi putih hanya dari baris yang saya ubah :

Preferences-> Java-> Editor-> Save Actions-> centang " Perform the selected actions on save-> centang Format source code-> pilih Format edited lines.

Perhatikan tidak perlu mengklik Configure the formatter settings on the Formatter page- semua gaya kode secara otomatis termasuk menghapus spasi spasi. Setidaknya saya tidak bisa menemukan pengaturan untuk ini dalam konfigurasi Formatter, dan itu berhasil di luar kotak untuk built-in Java Conventions, Eclipse, Eclipse 2.1 styles, serta GoogleStyle .

Saat menggunakan pengaturan ini, Anda jelas perlu juga mematikan solusi untuk bagian 1 dari pertanyaan.

Eclipse version checked: 4.5.2, 4.11
Dan Berindei
sumber
Bagaimana cara saya mendefinisikan format? Apakah saya menggunakan tautan Formatter atau tombol Konfigurasi?
Vijay Kotari
Opsi ini juga muncul di PDT untuk PHP, di bawah Simpan Tindakan.
thaddeusmt
1
@VijayKotari Jawaban telah diedit - tidak perlu menentukan format.
Jan Żankowski
350

Saya menganggap pertanyaan Anda berkaitan dengan kode Java. Jika itu masalahnya, Anda sebenarnya tidak memerlukan plugin tambahan untuk menyelesaikan 1). Anda bisa pergi ke Preferences -> Java -> Editor -> Save Actions dan konfigurasikan untuk menghapus trailing spasi .

Dengan suara itu Anda juga ingin menjadikan ini pengaturan tim-lebar, kan? Untuk membuat hidup lebih mudah dan menghindari keharusan mengingatnya setiap kali Anda memiliki ruang kerja baru, Anda dapat mengatur aksi save sebagai preferensi spesifik proyek yang disimpan ke dalam SCM Anda bersama dengan kode.

Untuk melakukan itu klik kanan pada proyek Anda dan pergi ke Properties -> Java Editor -> Save Actions . Dari sana Anda dapat mengaktifkan pengaturan khusus proyek dan mengkonfigurasinya untuk menghapus spasi spasi tambahan (di antara hal-hal berguna lainnya).

NB : Opsi ini telah dihapus di Eclipse Kepler (4.3) dan rilis berikut.

NB # 2: Pilihannya sepertinya kembali di Eclipse Luna -Luna Service Release 1a (4.4.1)

gcastro
sumber
2
Terima kasih, gcastro - ini lebih mudah daripada AnyEdit. Sayangnya, ini untuk seluruh file yang sedang diedit .. masih tidak tahu bagaimana melakukannya hanya untuk baris yang saya ubah - sepertinya itu mungkin mustahil saat ini.
Jan Żankowski
7
Bagus untuk Jawa; baik untuk C / C ++ juga; tetapi tidak untuk Python di PyDev.
Craig McQueen
14
Untuk Python di PyDev, saya telah membuat permintaan fitur untuk ini. Lihat: sourceforge.net/tracker/…
Craig McQueen
5
FYI ... Konsep yang sama untuk PHP. Preferensi -> PHP -> Editor -> Simpan Tindakan.
seanmrafferty
1
Saya tidak tahu apakah ini pernah berhasil, tetapi sepertinya tidak bekerja di versi terbaru Eclipse (Kepler). Anda dapat menjalankan formatter hanya pada baris yang diedit, tetapi memangkas ruang kosong terbatas pada semua baris atau mengabaikan baris kosong - benar-benar menjengkelkan.
Thor84no
73

Anda tidak memerlukan plugin apa pun untuk melakukannya. Misalnya, jika Anda membuat kode JAVA, Anda dapat menghapus trailingpaces trailing yang mengonfigurasi tindakan save:

Eclipse 3.6

Preferences-> Java-> Editors-> Save Actions-> Periksa Perform the selected actions on save-> Periksa Additional actions-> Klik menuConfigure.. tombol.

Di Code organizingtab, periksaRemove trailing whitespace

Dave
sumber
4
Ini adalah jawaban pertama yang secara khusus menyarankan mencari di bawah "Tindakan tambahan" untuk "Hapus spasi spasi." Terima kasih.
DavidRR
7
ini hanya berfungsi untuk file .java, saya biasanya bekerja dengan selusin ekstensi
Eildosa
Bekerja untuk Eclipse 4.12
Matilda Smeds
46

PyDev dapat melakukannya dengan Ctrl+ Shift+F jika Anda memiliki opsi pemformat kode yang diatur untuk melakukannya, atau dengan during saving:

Eclipse-> Window-> Preferences-> PyDev->Editor -> Code Style-> Code Formatter:

Saya menggunakan setidaknya ini:

  • Format otomatis sebelum menyimpan
  • Garis pangkas kanan?
  • Tambahkan baris baru di akhir file
Ciantic
sumber
5
Ini tidak mencakup pertanyaan tentang pengupasan ruang hanya dari baris yang diedit. Ini juga fitur berbahaya karena menjalankan semua opsi Pemformat Kode dan opsi yang tidak dicentang tidak sama dengan "abaikan / jangan gunakan". mis: jika "Gunakan spasi setelah koma" tidak dicentang, Format Formatter akan menghapus spasi itu alih-alih mengabaikan opsi.
JCotton
7
Ada opsi baru di PyDev Code Formatter: Saat simpan, hanya menerapkan pemformatan di baris yang diubah.
warvariuc
2
-1 untuk memberikan jawaban yang terlalu umum — pertanyaannya adalah tentang ruang putih; mengaktifkan pemformatan kode otomatis berarti komit sumber Anda akan mulai memiliki hal-hal yang tidak direncanakan di dalamnya, menyebabkan riwayat berantakan karena komit berisi hal-hal yang tidak terkait dengan judul komit.
Erik Kaplun
36

Lakukan sebagai berikut:

Preferences-> Java-> Editor->Save Actions

masukkan deskripsi gambar di sini

Sumit Singh
sumber
19

Anda dapat memetakan kunci di Eclipse untuk menghapus spasi spasi trailing secara manual di seluruh file, tetapi hanya berdasarkan permintaan alih-alih otomatis disimpan. (Preferensi / Tombol dan kemudian petakan satu set kunci ke File / Hapus Trailing Whitespace) Ini bisa berguna jika Anda ingin membersihkan semua file baru, tetapi pertahankan kode lama tidak tersentuh.

Strategi lain adalah mengaktifkan tampilan visual spasi putih, jadi setidaknya Anda akan tahu kapan Anda menambahkan spasi tambahan. Sejauh yang saya tahu, tidak ada cara untuk menampilkan hanya spasi putih, tapi saya akan senang terbukti salah.

Kena
sumber
Terima kasih banyak atas jawaban ini! Sejauh ini itu satu-satunya cara yang saya temukan untuk plugin Aptana.
Igor Zinov'yev
11

Dalam keadaan darurat, untuk editor yang sama sekali tidak mendukung penghapusan spasi spasi tambahan (mis. XML editor), Anda dapat menghapusnya dari semua baris dengan melakukan pencarian dan penggantian, memungkinkan ekspresi reguler, kemudian menemukan "[\ t] + $ "dan menggantinya dengan" "(kosong). Mungkin ada regex yang lebih baik untuk melakukan itu tetapi berfungsi untuk saya tanpa perlu menginstal AnyEdit.

Malvine
sumber
9

Saya akan mengatakan AnyEdit juga. Itu tidak menyediakan fungsi khusus ini. Namun, jika Anda dan tim Anda menggunakan fitur AnyEdit di setiap tindakan simpan, maka saat Anda membuka file, file tersebut tidak boleh memiliki spasi spasi tambahan.

Jadi, jika Anda memodifikasi file ini, dan jika Anda menambahkan spasi tambahan, maka selama operasi penyimpanan, AnyEdit hanya akan menghapus spasi baru ini, karena mereka adalah satu-satunya ruang tambahan di file ini.

Jika, untuk beberapa alasan, Anda perlu menjaga spasi tambahan pada garis yang tidak dimodifikasi oleh Anda, maka saya tidak punya jawaban untuk Anda, dan saya tidak yakin fitur semacam ini ada di setiap plugin Eclipse ...

Romain Linsolas
sumber
4
Ya, saya ingin menjaga spasi pada garis tidak dimodifikasi oleh saya .. Ini adalah perilaku default dari Intellij Idea (menghapus spasi pada baris saya, simpan di tempat lain), dan saya ingin mendapatkannya di Eclipse . Terima kasih atas jawabannya.
Jan Żankowski
5

Untuk php ada juga opsi:masukkan deskripsi gambar di sini

Hei bro
sumber
4

Ada cara yang sangat mudah untuk melakukan ini dengan sed, alat baris perintah Unix. Anda mungkin bisa membuat makro di Eclipse untuk menjalankan ini:

sed -i 's/[[:space:]]*$//' <filename>
jcoffland
sumber
4

Seperti yang dikatakan @Malvineous, Ini bukan profesional tetapi penyelesaian untuk menggunakan metode Find / Replace untuk menghapus spasi tambahan (di bawah ini termasuk tab U + 0009 dan whitespace U + 0020).
Cukup tekan Ctrl + F (atau perintah + F)

  1. Temukan [\t ][\t ]*$
  2. Ganti dengan string kosong
  3. Gunakan ekspresi reguler
  4. Menggantikan semua

ekstra:
Untuk menghilangkan spasi, temukan ^[\t ][\t ]*alih-alih [\t ][\t ]*$
Untuk menghapus garis kosong, temukan^\s*$\r?\n

fuweichin
sumber
1
Bagaimana kalau [\t ]+$bukan [\t ][\t ]*$?
Jonah Graham
1

Saya tidak mengetahui solusi apa pun untuk bagian kedua dari pertanyaan Anda. Alasannya adalah karena tidak jelas bagaimana mendefinisikan saya berubah . Berubah kapan? Hanya antara 2 penyelamatan atau antara komitmen ... Pada dasarnya - lupakan saja.

Saya menganggap Anda ingin tetap berpegang pada beberapa pedoman, tetapi jangan menyentuh sisa kode. Tetapi pedoman harus digunakan secara keseluruhan, dan bukan untuk gigitan dan potongan. Jadi saran saya adalah - ubah semua kode ke pedoman: ini adalah operasi sekali saja, tetapi pastikan bahwa semua pengembang Anda memiliki plugin yang sama (AnyEdit) dengan pengaturan yang sama untuk proyek tersebut.

mobil van
sumber
7
Karena ini adalah tindakan save, itu akan menjadi garis yang diubah di antara save. Eclipse sudah melacak garis-garis ini untuk menandai di bilah samping.
starblue
0

Saya menggunakan perintah ini untuk git: git config --global core.whitespace cr-at-eol

Ini menghapus ^Mkarakter yang tertinggal.

pengguna7577563
sumber