Боюсь, я столкнулся с чем-то довольно странным. Когда я нормально открываю файл vim README.txt
, все нормально. Но после sudo vim README.txt
этого файл становится пустым и выдает E138: Can't write viminfo file $HOME/.viminfo!
ошибку при попытке выйти.
Я подозревал, что .viminfo
файл поврежден, поэтому удалил его. Эта проблема остается. Кто-нибудь может помочь?
permissions
vim
sudo
root
Джеймс Адам Бакленд
источник
источник
ls .viminf*
?ls -la .vininf*
?Ответы:
При запуске
sudo vim
вы запускаете vim от имени пользователя root. Это означает, что проблема заключается в файле viminfo в / root. Вы должны сделатьrm /root/.viminf*
.Чтобы убедиться в этом, запустите
sudo vim
и выполнить следующую команду::!echo $HOME
. Это покажет вам, что ваш домашний каталог - / root.Я бы порекомендовал вам не запускать vim от имени пользователя root, а использовать
sudoedit
. Это более безопасное решение, так как редактор не работает от имени пользователя root. Вы никогда не знаете, что может сделать плагин. Кроме того, он позволяет вам использовать ваши собственные настройки и плагины в vim, а не те, что в корнях vimrc.sudoedit
так же, как бегsudo -e
. sudoedit работает путем создания временной копии файла, который принадлежит вызывающему пользователю (вам). Когда вы закончите редактирование, изменения записываются в фактический файл, а временный файл удаляется.Общее правило: не запускайте все с правами root, если в этом нет необходимости.
источник
Я получаю эту ошибку на каждом выходе. Я не использовал
sudo
. В нем явно упоминается мой домашний каталог пользователя:Удаление
~/.viminfo
не исправило ошибку.Оказывается, у меня была куча временных файлов viminfo, и удаление этих исправило проблему:
Нашел это решение здесь .
источник
Я получил ту же ошибку при попытке
:wq
файла на диске, который был полностью заполнен. Если вы получите это сообщение, вы можете проверить доступное дисковое пространство.источник
Гораздо более чистый способ создать домашний каталог - использовать скелет, который Linux предоставит вам, например.
источник
Для меня проблема заключалась в том, что я изменил свой домашний каталог на расположение внутри монтирования NFS. По какой-то причине это привело к тому, что владельцем каталога стал "никто". Добавление разрешений на запись для «других» решило проблему, поскольку я явно не являлся владельцем файла.
источник
Скорее всего, это происходит из-за того, что домашнему каталогу не хватило места на диске, и любая новая операция vim не может записать в файл .viminfo.
источник
У меня была такая же проблема при обновлении содержимого Makefile. Мне нужна была локальная переменная, и я решил назвать ее
HOME
, поэтому я вошел в строкуHOME=2.154
. Это приводитvim-HOME
к замене параметра на несуществующий каталог. Не используйтеHOME
переменную для другого использования.источник
HOME
это предопределенная переменная среды, и ее переопределение обычно не очень хорошая идея.Я думаю, что это может относиться только к довольно старым версиям linux / vi, но я обнаружил, что в домашнем каталоге root есть временные файлы с именами файлов /root/.viminfa.tmp ... /root/.viminfz.tmp и что их было 26 с метками времени, охватывающими несколько лет. У нас закончились буквы алфавита, так как все аз были взяты. Я удалил все эти файлы, и проблема исчезла. Конечно, Хенрик исправил
# rm -rf ~/.viminf*
бы эту проблему просто отлично.источник
Кажется, вы очистили переменные окружения.
Сделай это:
export HOME = / root
Это должно решить вашу проблему.
источник
Не знаю, как я сам столкнулся с этим сценарием, так как не помню, чтобы я открывал какие-либо файлы,
sudo vim
но для каждого:q
файла я получал похожее: «Не могу записать, viminfo is not writeable».rm ~/.viminfo
не решил и~/.vim/
был пуст.chmod 666 ~/.viminfo
Устранено это предупреждение при выходе из файла в Vim. Хотя я не уверен, что это лучшее решение? Имеет смысл, почему он прекратил предупреждение, поскольку .viminfo ранее был rw ------, и я предполагаю, что он записывается с использованием истории команд vim.источник
По моему сценарию, это было полное отсутствие
/root/.viminfo
файла. После того, как я коснулся файла, ошибка прекратилась, и файл был обновлен при выходе из vim. PS: Это встроенный в Windriver Linux.источник