Jadi saya bekerja di toko PHP, dan kita semua menggunakan editor yang berbeda, dan kita semua harus bekerja di windows. Saya menggunakan vim, dan semua orang di toko terus mengeluh bahwa setiap kali saya mengedit file ada baris baru di bagian bawah. Saya telah mencari-cari dan menemukan bahwa ini adalah perilaku vi & vim yang terdokumentasi ... tapi saya bertanya-tanya apakah ada cara untuk menonaktifkan fitur ini. (Akan lebih baik jika saya dapat menonaktifkannya untuk ekstensi file tertentu).
Jika ada yang tahu tentang ini, itu akan bagus!
?>
tag penutup terakhir , hanya untuk alasan ini.Jawaban:
Dan untuk
vim
7.4+ Anda dapat menggunakan (lebih disukai di .vimrc Anda) (terima kasih kepada 罗泽轩 untuk berita terakhir itu!):Sekarang tentang versi lama
vim
.Bahkan jika file sudah disimpan dengan baris baru di akhir:
vim -b file
dan sekali dalam vim:selesai
atau Anda dapat membuka file dengan vim
:e ++bin file
Alternatif lain:
sumber
set binary
danset noeol
.vimrcbinary
menggantiexpandtab
, yang akan mengarahkan Anda untuk mendapatkan tab literal di sumber Anda.set nofixendofline
untuk menyelesaikan masalah di Vim 7.4+Tambahkan perintah berikut ke .vimrc Anda untuk mengubah opsi end-of-line:
Namun , PHP sendiri akan mengabaikan end-of-line terakhir - seharusnya tidak menjadi masalah. Saya hampir yakin bahwa dalam kasus Anda ada sesuatu yang lain yang menambahkan karakter baris baru terakhir, atau mungkin ada mixup dengan windows / unix jenis akhir baris (
\n
atau\r\n
, dll).Memperbarui:
Solusi alternatif mungkin dengan menambahkan baris ini ke .vimrc Anda:
sumber
Ada cara lain untuk melakukan pendekatan ini jika Anda menggunakan Git untuk kontrol sumber. Terinspirasi oleh jawaban di sini , saya menulis filter sendiri untuk digunakan dalam file gitattributes .
Untuk menginstal filter ini, simpan sebagai
noeol_filter
suatu tempat di Anda$PATH
, buat itu dapat dieksekusi, dan jalankan perintah berikut:Untuk mulai menggunakan filter hanya untuk Anda sendiri, masukkan baris berikut di
$GIT_DIR/info/attributes
:Ini akan memastikan Anda tidak melakukan baris baru apa pun dalam suatu
.php
file, apa pun yang dilakukan Vim.Dan sekarang, skrip itu sendiri:
sumber
Saya belum mencoba opsi ini, tetapi informasi berikut ini diberikan dalam sistem bantuan vim (yaitu help eol):
Anda mungkin tertarik pada jawaban untuk pertanyaan sebelumnya juga: " Mengapa file harus diakhiri dengan baris baru ".
sumber
Saya telah menambahkan tip tentang Vim wiki untuk masalah yang serupa (walaupun berbeda):
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
sumber
fixeol
opsi yang dapat dinonaktifkan untuk secara otomatis menjaga setiap EOL yang hilang di akhir file. Skrip ini menjadi tidak perlu untuk Vim 7.4.785 dan yang lebih baru. " (Sumber: halaman wiki yang sama.) Terima kasih, saya tidak mengetahui opsi baru itu.noeol
dannofixeol
untuk mencapai hasil yang diinginkan.OK, Anda menggunakan Windows mempersulit;)
Ketika opsi 'binary' me-reset opsi 'fileformat' (dan menulis dengan set 'binary' selalu menulis dengan akhiran baris unix), mari kita ambil palu besar dan lakukan secara eksternal!
Bagaimana dengan mendefinisikan autocommand (: help autocommand) untuk acara BufWritePost? Perintah otomatis ini dijalankan setelah setiap kali Anda menulis seluruh buffer. Dalam perintah otomatis ini panggil alat eksternal kecil (php, perl atau skrip apa pun) yang menghapus baris baru terakhir dari file yang baru saja ditulis.
Jadi ini akan terlihat seperti ini dan akan masuk ke file .vimrc Anda:
Pastikan untuk membaca seluruh dokumentasi vim tentang autocommand jika ini adalah pertama kalinya Anda berurusan dengan autocommands. Ada beberapa peringatan, misalnya disarankan untuk menghapus semua autocmds di .vimrc Anda jika .vimrc Anda mungkin bersumber beberapa kali.
sumber
silent
. Misalnyasilent !your-script <afile>
.Saya telah mengimplementasikan saran Blixtor dengan Perl dan Python pasca pemrosesan, baik berjalan di dalam Vim (jika dikompilasi dengan dukungan bahasa seperti itu), atau melalui skrip Perl eksternal. Ini tersedia sebagai plugin PreserveNoEOL di vim.org.
sumber
let g:PreserveNoEOL = 1
ke.vimrc
file saya ! Harus belajar vimscript untuk mencari tahu dari deskripsi plugin! : D:help PreserveNoEOL-usage
akan memberitahumu juga. RTFM :-)INSTALLATION
danCONFIGURATION
. Bahkan tidak memperhatikanUSAGE
bagian dalam deskripsi, karena itu di atas instalasi :)Mungkin Anda bisa melihat mengapa mereka mengeluh. Jika file php memiliki baris baru setelah akhir?>, Php akan menampilkannya sebagai bagian dari halaman. Ini bukan masalah kecuali Anda mencoba mengirim header setelah file disertakan.
Namun,?> Di akhir file php adalah opsional. Tidak ada akhir?>, Tidak ada masalah dengan baris baru di akhir file.
sumber
Saya menambahkan .vimrc
dan itu membantu, cobalah
sumber
Saya pikir saya telah menemukan solusi yang lebih baik daripada jawaban yang diterima. Solusi alternatif tidak berfungsi untuk saya dan saya tidak ingin harus bekerja dalam mode biner sepanjang waktu. Untungnya ini sepertinya menyelesaikan pekerjaan saya dan saya belum menemukan efek samping yang buruk: mempertahankan end-of-line yang hilang di akhir file teks . Saya baru saja menambahkan semuanya ke ~ / .vimrc saya.
sumber
Apakah mungkin bagi Anda untuk menggunakan perintah khusus untuk menyimpan file-file ini?
Jika Anda melakukannya: set binary,: w dan: set nobinary file akan ditulis tanpa baris baru jika tidak ada yang memulai.
Urutan perintah ini bisa dimasukkan ke dalam perintah yang ditentukan pengguna atau pemetaan, tentu saja.
sumber
Dimulai dengan
vim
v7.4 yang dapat Anda gunakanAda beberapa informasi tentang perubahan itu di sini: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
sumber
Saya menemukan plugin vimscript ini bermanfaat untuk situasi ini.
Atau baca lebih lanjut di github
sumber