VimエラーE138:viminfoファイル$ HOME / .viminfoを書き込めません!


20

私はむしろ奇妙な何かに遭遇したのではないかと心配しています。ファイルを正常に開くとvim README.txt、すべてが正常になります。しかし、にするsudo vim README.txtと、ファイルは空白になりE138: Can't write viminfo file $HOME/.viminfo!、終了しようとするとエラーが発生します。

.viminfoファイルが破損している疑いがあるので、削除しました。この問題は残っています。誰でも助けることができますか?


実行中に結果を投稿できますls .viminf*か?
cuonglm 14年

viminfoファイルの権限は何ですか?の出力はls -la .vininf*何ですか?
darnir

回答:


29

実行sudo vimすると、rootとしてvimが起動します。つまり、問題は/ root内のviminfoファイルであることを意味します。あなたがする必要がありますrm /root/.viminf*

これを確認sudo vimするには、次のコマンドを実行して実行します:!echo $HOME。これにより、ホームディレクトリが/ rootであることがわかります。

rootとしてvimを実行するのではなく、を使用することをお勧めしますsudoedit。これは、エディターがルートとして実行されていないため、より安全なソリューションです。プラグインが何をするのか決してわかりません。さらに、root vimrcの設定とプラグインではなく、vimで独自の設定とプラグインを使用できます。sudoeditは、実行と同じsudo -eです。sudoeditは、呼び出し元のユーザー(ユーザー)が所有するファイルの一時コピーを作成することで機能します。編集が終了すると、変更が実際のファイルに書き込まれ、一時ファイルが削除されます。

一般的な経験則として:必要でない場合は、rootとして実行しないでください。


「これは、エディターがrootとして実行されていないため、これはより安全なソリューションです。プラグインが何をするのかわかりません。」というメモで、私はたくさんの心配から私を救ったのではないかと思います脆弱性ですが、私は間違っていました。
bballdave025

14

すべての出口でこのエラーが発生しました。私は使用しませんでしたsudo。私のユーザーのホームディレクトリを明示的に言及しました:

E138: Can't write viminfo file /Users/henrik/.viminfo!

削除~/.viminfoしてもエラーは修正されませんでした。

たくさんのviminfo一時ファイルがあり、それらを削除すると問題が修正されたことがわかりました。

 ls ~/.viminf*      # If you want to see the files.
 rm -rf ~/.viminf*  # Remove them.

ここでこのソリューションを見つけまし


5

:wqディスク上のファイルを完全にいっぱいにしようとしたときに、同じエラーが表示されました。このメッセージが表示された場合、使用可能なディスク容量を確認してください。


3

ホームディレクトリを作成するためのもっときれいな方法は、たとえばLinuxが提供するスケルトンを使用することです。

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae

1
私は質問がホームディレクトリの作成を行うにはほとんど持って怖い...
ジョン・WHスミス

vimが.viminfoファイルに保存できるようにするには、ホームディレクトリを作成する必要があります。そのため、上記のコマンドが適用されます。
リック

1
このような結論に達する前に、このファイルが存在しない理由は無数にあります。ホームディレクトリがないと、たぶん単にファイルがなくなっているだけではなく、もっとトラブルを引き起こすでしょう; このため、「ホームディレクトリを作成する」という「ファイルが見つからない」という質問にはほとんど答えることができます。:)
ジョンWHスミス

1
+1私の場合、このエラーは、ホームディレクトリのないユーザーとしてファイルを編集していたために発生しました。
ゾルタン

3

私にとって問題は、NFSマウント内の場所にホームディレクトリを変更したことです。何らかの理由で、これによりディレクトリの所有者が「nobody」になりました。「その他」の書き込み権限を追加すると、明らかにファイルの所有者ではないため、問題は解決しました。

chmod o+w ~/.viminfo

1
答えを明確にしてください。ONELINE答えはSEでは良いとしてカウントされません
ロメオNinov

2
他の書き込み権限を追加すると助けになるのは奇妙だ。おそらく、あなたはあなた自身のファイルを所有していなかったのですか?
ジェフシャラー

これは私のために動作します。私の「.viminfo」はユーザー「root」によって作成され、ユーザー「ubuntu」がそれを変更しようとする場合、書き込み許可が必要だと思います。一言で言えば、「-rw-r--r--」は「-rw-r--rw-」になります。
エメラルド

0

これは、ホームディレクトリのディスク領域が不足しており、新しいvim操作で.viminfoファイルに書き込むことができないために発生している可能性があります。


3
それは少し大げさだと思われます。その証拠はありますか?
-jasonwryan

可能性の1つです。
Ned64

0

Makefileのコンテンツを更新するときにも同じ問題がありました。ローカル変数が必要だったHOMEので名前を付けることにしたので、行を入力しましたHOME=2.154。これにより、vim-HOME設定が存在しないディレクトリに置き換えられます。HOME変数を他の用途に使用しないでください。


1
これHOMEは事前定義された環境変数であり、通常は再定義することはお勧めできません。
バルン

0

これはかなり古いバージョンのlinux / viにのみ適用されると思いますが、ルートのホームディレクトリに一時ファイルがあり、ファイル名は/root/.viminfa.tmp ... /root/.viminfz.tmpであり、数年間にわたってタイムスタンプが付けられた26がありました。すべてのazが取得されると、アルファベットの文字がなくなりました。これらのファイルをすべて削除すると、問題は消えました。もちろん、ヘンリック # rm -rf ~/.viminf* はこの問題を修正します。


0

環境変数をクリアしたようです。

これを行う:

export HOME = / root

これで問題が解決するはずです。


0

使用してファイルを開くことを覚えていないので、自分でこのシナリオにどのように出会ったのかはわかりませんsudo vimが、各:qファイルで「viminfoを書き込むことができません」は書き込み不可です。

rm ~/.viminfo解決せず、~/.vim/空でした。

chmod 666 ~/.viminfoVimでファイルを終了する際の警告メッセージを解決しました。これが最善の解決策かどうかはわかりませんが?.viminfoが以前rw ------だったので警告を停止した理由は理にかなっています。vimコマンドの履歴で書き込まれると思います。


0

私のシナリオでは、/root/.viminfoファイルがまったくありませんでした。ファイルに触れた後、エラーが停止し、vimの終了時にファイルが更新されました。PS:これはwindriver組み込みLinuxです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.