Apakah mungkin untuk mengkonfigurasi Visual Studio 2008 untuk secara otomatis menghapus karakter spasi di akhir setiap baris saat menyimpan file? Sepertinya tidak ada opsi bawaan, jadi apakah ada ekstensi yang tersedia untuk melakukan ini?
122
Jawaban:
CodeMaid adalah ekstensi Visual Studio yang sangat populer dan melakukan ini secara otomatis bersama dengan pembersihan berguna lainnya.
Saya mengaturnya untuk membersihkan file di simpan, yang saya yakini sebagai default.
sumber
Temukan / Ganti menggunakan Ekspresi Reguler
Dalam dialog Temukan dan Ganti, luaskan Opsi Temukan , centang Gunakan , pilih Ekspresi reguler
Temukan Apa : "
:Zs#$
"Ganti dengan : ""
klik Ganti Semua
Di editor lain ( parser Ekspresi Reguler normal ) "
:Zs#$
" akan menjadi "\s*$
".sumber
[^\S\r\n]+(?=\r?$)
[:Zs\t]#$
ini adalah adaptasi yang berguna.Anda dapat membuat makro yang dijalankan setelah penyimpanan untuk melakukannya untuk Anda.
Tambahkan yang berikut ini ke Modul EnvironmentEvents untuk makro Anda.
Saya telah menggunakan ini untuk beberapa waktu sekarang tanpa masalah. Saya tidak membuat makro, tetapi mengubahnya dari yang ada di ace_guidelines.vsmacros yang dapat ditemukan dengan pencarian cepat di Google.
sumber
Sebelum menyimpan, Anda mungkin dapat menggunakan pintasan format otomatis CTRL+ K+ D.
sumber
Anda dapat melakukannya dengan mudah dengan tiga tindakan berikut:
Ctrl+ A(pilih semua teks)
Edit -> Lanjutan -> Hapus Horisontal Whitespace
Edit -> Lanjutan -> Pilihan Format
Tunggu beberapa detik dan selesai.
Ini Ctrl+ Z'bisa jika terjadi kesalahan.
sumber
Mengambil elemen dari semua jawaban yang sudah diberikan, inilah kode yang saya dapatkan. (Saya terutama menulis kode C ++, tetapi mudah untuk memeriksa ekstensi file yang berbeda, sesuai kebutuhan.)
Terima kasih untuk semua orang yang berkontribusi!
sumber
Anda dapat menggunakan makro seperti yang dijelaskan dalam Menghapus spasi dan menulis ulang komentar, menggunakan penelusuran regex
sumber
Sayangnya, saya menggunakan VWD 2010 Express di mana makro tidak didukung. Jadi saya hanya melakukan copy / paste ke Notepad ++ menu kiri atas
Edit
>Blank Operations
>Trim Trailing Space
ada operasi terkait lainnya tersedia juga. Kemudian salin / tempel kembali ke Visual Studio.Anda juga dapat menggunakan NetBeans sebagai pengganti Notepad ++, yang memiliki "Hapus spasi tambahan" di bawah menu "Sumber".
sumber
Kecuali jika ini adalah proyek satu orang, jangan lakukan itu. Membedakan file lokal Anda dengan repositori kode sumber Anda pasti mudah, dan mengosongkan whitespace akan mengubah baris yang tidak perlu diubah. Saya sangat mengerti; Saya suka semua whitespace saya seragam - tetapi ini adalah sesuatu yang harus Anda tinggalkan demi kolaborasi yang lebih bersih.
sumber
Saya pikir versi Jeff Muir dapat sedikit ditingkatkan jika hanya memangkas file kode sumber (dalam kasus saya C #, tetapi mudah untuk menambahkan lebih banyak ekstensi). Saya juga menambahkan tanda centang untuk memastikan bahwa jendela dokumen terlihat karena beberapa situasi tanpa centang tersebut menunjukkan kesalahan aneh (LINQ ke file SQL '* .dbml', misalnya).
sumber
Saya pribadi menyukai ekstensi Trailing Whitespace Visualizer Visual Studio yang memiliki dukungan kembali melalui Visual Studio 2012.
sumber
Saya rasa saya memiliki versi makro ini yang tidak akan merusak VS2010 pada refactor, dan juga tidak akan menggantung IDE saat menyimpan file non-teks. Coba ini:
sumber
Saya menggunakan ArtisticStyle (C ++) untuk melakukan ini dan juga memformat ulang kode saya. Namun, saya harus menambahkan ini sebagai alat eksternal dan Anda harus memicunya sendiri sehingga Anda mungkin tidak menyukainya.
Namun, saya merasa sangat baik karena saya dapat memformat ulang kode dengan cara yang lebih khusus (misalnya, parameter fungsi multiline) sehingga saya dapat membayar harga untuk menjalankannya secara manual. Alat ini gratis.
sumber
Berdasarkan jawaban Dyaus dan ekspresi reguler dari laporan hubungkan , berikut adalah makro yang menangani simpan semua, tidak mengganti tab dengan spasi, dan tidak memerlukan variabel statis. Kemungkinan kerugiannya? Sepertinya agak lambat, mungkin karena beberapa panggilan ke
FindReplace
.Bagi siapa pun yang mencoba menggunakan ini di tambahan Visual Studio 2012, ekspresi reguler yang akhirnya saya gunakan adalah
[ \t]+(?=\r?$)
(jangan lupa untuk menghindari garis miring terbalik jika perlu). Aku tiba di sini setelah beberapa upaya sia-sia untuk memperbaiki masalah dengan konversi mentah dari{:b}+$
gagal untuk mencocokkan kembali kereta.sumber
Ini adalah contoh yang sangat bagus tentang cara menghapus spasi kosong. Ada beberapa hal yang akan saya ubah berdasarkan apa yang saya temukan menggunakan makro ini. Pertama-tama, makro secara otomatis mengonversi tab menjadi spasi. Hal ini tidak selalu diinginkan dan dapat memperburuk keadaan bagi orang yang menyukai tab (biasanya berbasis Linux). Masalah tab sebenarnya tidak sama dengan masalah spasi ekstra. Kedua, makro mengasumsikan hanya satu file yang disimpan sekaligus. Jika Anda menyimpan banyak file sekaligus, ini tidak akan menghapus spasi kosong dengan benar. Alasannya sederhana. Dokumen saat ini dianggap sebagai dokumen yang dapat Anda lihat. Ketiga, tidak ada pengecekan kesalahan pada hasil pencarian. Hasil ini dapat memberikan kecerdasan yang lebih baik tentang apa yang harus dilakukan selanjutnya. Misalnya, jika tidak ada spasi yang ditemukan dan diganti, tidak perlu menyimpan file lagi. Secara umum, saya tidak suka perlunya bendera global untuk diselamatkan atau tidak. Itu cenderung meminta masalah berdasarkan keadaan yang tidak diketahui. Saya menduga bendera telah ditambahkan semata-mata untuk mencegah pengulangan tak terbatas.
Saya menambahkan kotak pesan debug untuk membantu melihat apa yang sedang terjadi. Itu membuatnya sangat jelas bahwa penyimpanan banyak file tidak berfungsi. Jika Anda ingin bermain dengan mereka, hapus tanda komentar pada baris tersebut.
Perbedaan utamanya adalah menggunakan document.Activate () untuk memaksa dokumen ke latar depan dokumen aktif saat ini. Jika hasilnya 4, artinya teks tersebut diganti. Nol berarti tidak ada yang terjadi. Anda akan melihat dua kali penyimpanan untuk setiap file. Yang pertama akan menggantikan dan yang kedua tidak akan melakukan apa-apa. Mungkin ada masalah jika penyimpanan tidak dapat menulis file tetapi semoga acara ini tidak dipanggil jika itu terjadi.
Sebelum skrip asli, saya tidak menyadari bagaimana skrip bekerja di Visual Studio. Agak mengherankan bahwa ia menggunakan Visual Basic sebagai antarmuka utama tetapi berfungsi dengan baik untuk apa yang perlu dilakukan.
sumber
Tambahan sederhana adalah menghapus carriage return selama save.
Kunci untuk bekerja ini adalah mengubah \ x000d \ x000a menjadi \ x000a. Awalan \ x menunjukkan pola Unicode. Ini akan mengotomatiskan proses menyiapkan file sumber untuk sistem Linux.
sumber