Saya khawatir saya mengalami sesuatu yang agak aneh. Ketika saya membuka file secara normal vim README.txt
, semuanya baik-baik saja. Namun setelah itu sudo vim README.txt
, file tersebut menjadi kosong, dan memberi saya E138: Can't write viminfo file $HOME/.viminfo!
kesalahan saat mencoba keluar.
Saya curiga .viminfo
file tersebut rusak, jadi saya menghapusnya. Masalah ini tetap ada. Adakah yang bisa membantu?
permissions
vim
sudo
root
James Adam Buckland
sumber
sumber
ls .viminf*
?ls -la .vininf*
?Jawaban:
Ketika Anda menjalankan
sudo vim
Anda mulai vim sebagai root. Itu berarti bahwa itu adalah file viminfo di / root yang menjadi masalah. Anda harus melakukannyarm /root/.viminf*
.Untuk memastikan ini, jalankan
sudo vim
dan jalankan perintah ini::!echo $HOME
. Ini akan menunjukkan kepada Anda bahwa direktori home Anda adalah / root.Saya akan merekomendasikan bahwa Anda tidak menjalankan vim sebagai root, melainkan gunakan
sudoedit
. Ini adalah solusi yang lebih aman karena editor tidak berjalan sebagai root. Anda tidak pernah tahu apa yang mungkin dilakukan plugin. Selain itu memungkinkan Anda untuk menggunakan pengaturan dan plugin Anda sendiri di vim dan bukan yang di root vimrc.sudoedit
sama dengan berlarisudo -e
. sudoedit bekerja dengan membuat salinan sementara dari file yang dimiliki oleh pengguna yang memohon (Anda). Ketika Anda selesai mengedit, perubahan ditulis ke file aktual dan file sementara dihapus.Sebagai aturan umum: Jangan menjalankan hal-hal sebagai root jika tidak perlu.
sumber
Saya mendapatkan kesalahan ini di setiap pintu keluar. Saya tidak menggunakan
sudo
. Secara eksplisit disebutkan direktori home user saya:Menghapus
~/.viminfo
tidak memperbaiki kesalahan.Ternyata saya punya banyak file temp viminfo, dan menghapus yang memperbaiki masalah:
Temukan solusi ini di sini .
sumber
Saya menerima kesalahan yang sama ketika mencoba
:wq
file pada disk yang benar-benar penuh. Jika Anda menerima pesan ini, Anda mungkin ingin memeriksa ruang disk yang tersedia.sumber
Cara yang jauh lebih bersih untuk membuat direktori home adalah dengan menggunakan kerangka yang disediakan linux untuk Anda misalnya.
sumber
Bagi saya masalahnya adalah bahwa saya telah mengubah direktori home saya ke lokasi di dalam NFS mount. Untuk beberapa alasan, ini mengakibatkan pemilik direktori menjadi "tidak ada". Menambahkan izin menulis untuk "lain" memecahkan masalah karena saya jelas bukan pemilik file.
sumber
Kemungkinan besar ini terjadi karena dir home telah kehabisan ruang disk dan operasi vim baru tidak dapat menulis dalam file .viminfo.
sumber
Saya memiliki masalah yang sama ketika memperbarui konten Makefile. Saya membutuhkan variabel lokal dan memutuskan untuk memberi nama
HOME
, jadi saya masukkan barisHOME=2.154
. Ini menyebabkanvim-HOME
pengaturan diganti oleh direktori yang tidak ada. Jangan gunakanHOME
variabel untuk penggunaan lain.sumber
HOME
adalah variabel lingkungan yang telah ditentukan dan mendefinisikan ulang itu biasanya bukan ide yang baik.Saya pikir ini mungkin hanya berlaku untuk versi linux / vi yang cukup lama tapi yang saya temukan adalah ada file sementara di direktori home root dengan nama file /root/.viminfa.tmp ... /root/.viminfz.tmp dan bahwa ada 26 dari mereka dengan cap waktu yang mencakup beberapa tahun. Kami kehabisan huruf-huruf alfabet karena semua az diambil. Saya menghapus semua file itu dan masalahnya hilang. Tentu saja Henrik
# rm -rf ~/.viminf*
akan memperbaiki masalah ini dengan baik.sumber
Sepertinya Anda telah membersihkan variabel lingkungan.
Melakukan hal ini:
ekspor HOME = / root
Ini harus menyelesaikan masalah Anda.
sumber
Tidak yakin bagaimana saya menemukan skenario ini sendiri karena saya tidak ingat membuka file menggunakan
sudo vim
tetapi pada setiap:q
file saya mendapatkan yang serupa 'Tidak dapat menulis viminfo tidak dapat ditulisi'.rm ~/.viminfo
tidak menyelesaikannya dan~/.vim/
kosong.chmod 666 ~/.viminfo
menyelesaikan pesan peringatan itu saat keluar dari file di Vim. Meskipun saya tidak yakin ini adalah solusi terbaik? Masuk akal mengapa ia menghentikan peringatan karena .viminfo adalah rw ------ sebelumnya dan saya menganggap sedang ditulis dengan sejarah perintah vim.sumber
Saya skenario saya, itu adalah tidak adanya
/root/.viminfo
file sama sekali. Setelah saya menyentuh file, kesalahan berhenti dan file diperbarui saat keluar vim. PS: Ini adalah windriver embedded linux.sumber