Saya mendapatkan kesalahan 'trailing whitespace' mencoba melakukan beberapa file di git.
Saya ingin menghapus karakter spasi spasi tambahan ini secara otomatis tepat sebelum saya menyimpan file python.
Bisakah Anda mengkonfigurasi vim untuk melakukan ini? Jika ya, bagaimana caranya?
vim
automation
whitespace
removing-whitespace
Paul D. Eden
sumber
sumber
Jawaban:
Saya menemukan jawabannya di sini .
Menambahkan berikut ke file .vimrc saya berhasil.
sumber
e
pada akhirnya berarti, jika kami tidak menemukan polanya, vi tidak menganggap perintah pengganti gagalKompilasi posisi kursor di atas ditambah hemat:
Jika Anda ingin menerapkan ini pada simpan ke file apa pun, tinggalkan yang kedua
autocmd
dan gunakan wildcard*
:sumber
autocmd FileType c,cpp,java,php,ruby,python
bagian untuk membuatnya berlaku untuk semua file.<buffer>
dengan*
jika Anda ingin bekerja pada semua filekeepp
keepp %s/\s\+$//e
Saya juga biasanya punya:
di
.vimrc
file saya , sehingga spasi baris akhir adalah hilighted.Todo menjadi nama-grup sintaks hilighting yang digunakan untuk kata kunci hilighting suka
TODO
,FIXME
atauXXX
. Ini memiliki warna latar belakang kekuningan jelek yang menjengkelkan, dan saya menemukan itu yang terbaik untuk menunjukkan hal-hal yang tidak Anda inginkan dalam kode Anda :-)sumber
:hi Todo
. Jadi saya membaca dengan teliti:hi <Tab>
dan:help hi
. Saya mempertimbangkanCursor
danError
, tetapi saya pikir saya akan mencobamatch VisualNOS /\s\+$/
. Saya mungkin menggabungkan ini dengan beberapa dariautocmd
jawaban lain di sini.Saya sama-sama menyoroti spasi spasi yang ada dan juga menghapus spasi spasi.
Saya mengkonfigurasi editor saya (vim) untuk menunjukkan ruang putih di akhir, misalnya
dengan ini di bagian bawah .vimrc saya:
dan saya 'strip otomatis' dari file saat menyimpannya, dalam kasus saya * .rb untuk file ruby, lagi di ~ / .vimrc saya
sumber
Inilah cara untuk memfilter lebih dari satu FileType.
sumber
Disalin dan ditempel dari http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html (tautan tidak lagi berfungsi, tetapi bit yang Anda butuhkan ada di bawah)
"Ini memiliki keuntungan tidak menyoroti setiap ruang yang Anda ketik di akhir baris, hanya ketika Anda membuka file atau meninggalkan mode penyisipan. Sangat rapi."
sumber
Saya melihat solusi ini dalam komentar di VIM Wikia - Hapus spasi yang tidak diinginkan
Saya sangat menyukainya. Menambahkan
.
spasi putih yang tidak diinginkan.Letakkan ini di
.vimrc
sumber
Beginilah cara saya melakukannya. Saya tidak ingat di mana saya mencurinya dari tbh.
sumber
%s
bendera global (g) pertama tidak berguna seperti ruang di EOL :-)Solusi yang hanya menghapus spasi spasi dari file tidak dapat diterima dalam semua keadaan. Ini akan bekerja dalam proyek yang telah memiliki kebijakan ini sejak awal, dan karenanya tidak ada ruang kosong sehingga Anda tidak hanya menambahkan diri Anda dalam komitmen yang akan datang.
Misalkan Anda hanya ingin tidak menambahkan contoh baru dari spasi putih, tanpa mempengaruhi spasi putih yang ada di baris yang tidak Anda edit, untuk menjaga komit Anda bebas dari perubahan yang tidak relevan dengan pekerjaan Anda.
Dalam hal ini, dengan git, Anda dapat menggunakan skrip seperti ini:
Dengan kata lain, kami menyimpan perubahan, dan kemudian memfilter semua
+
baris di diff untuk menghapus spasi kosong saat kami menerapkan kembali perubahan ke direktori yang berfungsi. Jika pipa perintah ini berhasil, kita menjatuhkan simpanan.sumber
Pendekatan lain di sini entah bagaimana tidak bekerja untuk saya di MacVim ketika digunakan dalam
.vimrc
file. Jadi, inilah yang bisa dan menyoroti spasi tambahan:sumber
set listchars=trail:·
mengatakan:E474: Invalid argument: listchars=trail:·
. Bisakah Anda memvalidasi contoh Anda?autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
sumber
Untuk orang yang ingin menjalankannya untuk tipe file tertentu (Tipe File tidak selalu dapat diandalkan):
Atau dengan vim7:
sumber
Jika Anda memangkas spasi, Anda hanya harus melakukannya pada file yang sudah bersih. "Ketika di Roma...". Ini adalah etika yang baik ketika mengerjakan basis kode di mana perubahan palsu tidak diterima.
Fungsi ini mendeteksi spasi spasi tambahan dan nyalakan pemangkasan hanya jika sudah bersih.
Penghargaan untuk ide ini berasal dari komentar di sini: https://github.com/atom/whitespace/issues/10 (aliran komentar bug tiket terpanjang yang pernah ada)
sumber
let _s=@/
dan mengembalikannya di akhir `let @ / = _ s`. Dalam hal ini kami menggunakan register black hole