Untuk file dalam folder tertentu, saya ingin vim untuk tidak pernah menyentuh stempel waktu "dimodifikasi" sama sekali.
Latar belakangnya adalah saya menggunakan Bloxsom untuk blogging, yang menggunakan file teks biasa ~/bloxsom
sebagai sumber semua artikel. Tanggal artikel (dan karena itu urutan penampilan) didasarkan pada tanggal modifikasi file teks. Saya tidak ingin artikel muncul seperti jika ini baru setiap kali saya memperbaiki kesalahan ketik. (Saya melakukan banyak
dari mereka ...: D)
Sejauh ini, vim mengubah stempel waktu dan stempel asli hilang selamanya. Ini OK dan saya ingin tetap seperti itu untuk sebagian besar file di sistem. Tapi saya tidak ingin itu untuk file blog - saya selalu bisa touch
file jika saya perlu.
Ada ide tentang cara mengubah vim ke perilaku ini?
sumber
Jawaban:
Saya tidak berpikir vim memiliki fitur ini. Salah satu alternatif adalah memodifikasi salinan dan mengatur cap waktu dengan tepat, misalnya:
Atau lebih baik lagi:
sumber
Jika Anda perlu bersenang-senang:
Ganti jalur dengan jalur file Anda yang sebenarnya
sumber
Saya menulis naskah Perl untuk itu.
Ini adalah pembungkus di sekitar vim, disimpan
~/bin/vim-nomtime.pl
dan mulai digunakanalias vim='~/bin/vim-nomtime.pl'
di .bashrc saya.Beberapa fitur bagus:
mendukung banyak nama file
mendukung beberapa dir "ditonton"
mendukung dir symlinked
dapat ditingkatkan dengan kriteria lain
sebagian besar yang mungkin dapat juga dicapai dengan versi vim murni. Kerugian dari solusi ini dibandingkan dengan solusi pure-vim yang saya inginkan adalah:
mengembalikan cap hanya setelah vim telah berhenti, jadi jika saya melakukan edit lama dan menyimpan secara teratur, file vill "pop-up" seperti baru sampai saya berhenti vim
ini mendukung banyak file pada command line, tetapi dengan cara yang cukup naif - hanya memeriksa apakah yang aktif
@ARGV
adalah file. Ini mungkin tidak akan berfungsi dengan wildcard (mis.vim note-*.txt
) Atau hal-hal lucu lainnyaitu bukan crash proof, bahkan mungkin bukan HUP-proof (yang bisa dilakukan)
... yah, itu pembungkus. (Maksudku, jika kita menyelesaikan semuanya melalui pembungkus, berapa banyak pembungkus yang akan kita miliki sebelum sesuatu yang buruk terjadi?)
sumber
Script pendek ini akan menghemat waktu yang dimodifikasi jika ada dir induk dari file berisi
.nomtime
file:sumber
Coba
bash
fungsi ini (berdasarkan jawaban Shâu Shắc )Sekarang kita dapat mengedit file dan menghemat waktu yang dimodifikasi menggunakan ini
sumber
vi
hanya meminta satu file pada satu waktu; itu tidak akan berhasilvi file1 file2
. (3) Tak perlu dikatakan bahwa, jika pengguna beralih ke file yang berbeda dengan:e
, itu tidak akan ditangani.Ada opsi untuk menyalin cap waktu dari file lain.
Contoh:
sumber
Saya menemukan solusi hebat di halaman web ini , yang menciptakan fungsi vim untuk menyimpan file saat ini sambil menjaga waktu modifikasi yang ada, dan mengikat fungsi ini ke tombol F4fungsi:
Namun, saya menemukan bahwa fungsi asli berisi bug kecil, memicu peringatan berikut jika F4digunakan dua kali pada file yang sama, karena vim menjadi bingung ketika waktu modifikasi berubah:
Untungnya, ini mudah untuk diperbaiki: Saya menambahkan perintah "edit" ke fungsi asli untuk memuat ulang file setelah mengembalikan timestamp, jadi vim tahu waktu modifikasi apa yang diharapkan dari file tersebut.
Berikut adalah fungsi vim yang dimodifikasi dengan perbaikan bug ini, yang dapat ditambahkan ke
~/.vimrc
:Catatan: Fungsi ini bergantung pada versi GNU
date
,stat
dantouch
.sumber
Menggunakan beberapa konsep yang dijelaskan di atas, berikut adalah alias one-liner yang sangat cepat dan kotor untuk CSH yang membuat perintah "edit" tersedia untuk tujuan ini:
Anda dapat dengan mudah menggunakan variabel lingkungan $ VISUAL atau $ EDITOR sebagai pengganti "vim". Dengan cara ini Anda dapat mengeluarkan perintah berikut untuk mengubah editor default
Sekarang alias itu sendiri tidak perlu didefinisikan ulang untuk mengakomodasi editor yang berbeda, membuatnya agak lebih portabel. Jika Anda menggunakan shell selain CSH atau TCSH, tentu saja, contoh di atas dapat disesuaikan.
sumber