Di Vim, ketika saya menulis salinan buffer saat ini ke file baru menggunakan :w [filename]
, tampaknya Vim menggunakan default (yaitu ditetapkan oleh umask atau apa pun) izin file untuk file baru. Jika buffer saat dimuat dari file yang ada, meskipun, tidak harus yang "benar" perilaku adalah untuk menduplikasi izin dari yang berkas? Misalnya, jika saya mengedit file yang dapat dieksekusi, dan saya menulis salinan file baru, mengapa Vim tidak menulis file yang dapat dieksekusi baru ? Apakah ada cara untuk memaksa Vim berperilaku seperti yang saya jelaskan, selain hanya melakukan sesuatu seperti ! chmod --reference % [newfilename]
setelah menulis file baru?
unix
vim
file-permissions
Kyle Strand
sumber
sumber
chmod
untuk Anda. AFAIK, vim tidak memiliki built in ini.Jawaban:
Anda bisa melakukan sesuatu seperti ini. Pertama, tangkap nama file asli.
Kemudian, saat Anda menyimpan file baru, ubah izinnya menjadi sama dengan file asli.
Masukkan saja kedua autocommand itu ke ~ / .vimrc Anda.
sumber
echo system(
dll kesilent echo system(
dll. Ini menghindari "tekan ENTER untuk melanjutkan" hang.call system(...
untuk tidak mencetak apapun ke layar juga, tetapi saya mencoba untuk menghindari masalah dari perintah gagal secara diam-diam. Jika Anda tidak berpikir itu akan pernah gagal, atau lebih suka hidup dengan kegagalan sesekali daripada sialPress ENTER...
, maka saya setuju dengan saran Anda. Saya pikir solusi yang lebih baik adalah menulis fungsi yang menangkap output dari sistem () dan menggemakannya hanya jika tidak kosong. Saya telah melakukannya di plugin dan berfungsi dengan cukup baik.Press ENTER,
, jadi saya pikir saya akan tetap dengansilent
atau menggunakancall
. Sekali lagi terima kasih atas sarannya!Pastikan bahwa tidak ada perubahan yang belum disimpan dalam file dan kemudian gunakan
cp
untuk membuat salinan. Itu akan menghasilkan salinan dengan izin yang sama seperti aslinya.sumber