E212 невозможно открыть файл для записи
Я пытаюсь редактировать sources.list, используя редактор vi, но получаю следующую ошибку при сохранении файла:
Я получил это, когда каталог, в который я пытался записать файл, превысил свой максимум. использование диска
Vim имеет встроенную справочную систему. Я только что процитировал, что он говорит :h E212 .
Вы можете редактировать файл как суперпользователь как sudo vim FILE . Или, если вы не хотите выходить из существующего сеанса vim (и теперь имеете надлежащие права sudo), вы можете выполнить:
Который сохранит файл.
Спасибо! В моем случае он пытался редактировать несуществующий файл в несуществующей директории. Оказывается, хотя вы можете «открыть» несуществующий файл и затем создать его, сохранив его, это не работает с несуществующим каталогом. И теперь я знаю о встроенной справочной системе Vim! :)
Спасибо! В моем случае я пытался записать на сетевой диск, и мои сетевые разрешения частично сбоили для этого сеанса экрана. Я закончил записывать во временный файл в / var и копировать его из другого экземпляра ssh в мой домашний каталог.
: h E212 говорит: ".bashrc" E212: Не удается открыть файл для записи E433: Нет файла тегов E149: Извините, нет помощи для E212
That happens to me all the time, I open a root file for writing:
Instead of losing all your changes and re-opening with sudo. See this demo of how to save those changes:
One time Setup demo to create a root owned read only file for a lower user:
First open the file as normal user:
Then make some changes to the file, it warns you its read only. Use this command.
Then write the file:
The permissions are expanded, and the file is saved. You need the exclamation point because you are editing a root file as a lesser user.
Explanation of what that command does:
The :w means write the file. The bang means start interpreting as shell. chmod means change permissions, 777 means full permissions everywhere. The percent means the current file name.
It applies the change. And it ask if you want to re-load. Press "O" for "Ok". Don't reload or you'll lose your changes.
Sometimes when I create a file using vim some/path/newfile , vim lets me edit it, only to complain when I attempt to save my changes.
This appears to happen only when the new file is located in a system directory.
:w! does not override this error.
How can I write the current buffer, without having to save it to a temporary location, exit, then rename it using sudo?
Also, sometimes if you put a space between w and ! , it works. (At least this works for me in linux using heavier vim vim-gtk not just lightweight vim although I'm sure it would work just the same in regular ole' vim.) I didn't know about Peter 's answer, though. w!! works for me, too.
Это происходит со мной все время, я открываю корневой файл для записи:
Вместо того, чтобы потерять все свои изменения и заново открыть с помощью sudo. Посмотрите демонстрацию того, как сохранить эти изменения:
Однократная демонстрация установки для создания файла, доступного только для чтения, для пользователя с правами root:
Сначала откройте файл как обычный пользователь:
Затем внесите некоторые изменения в файл, он предупредит вас только для чтения. Используйте эту команду.
Затем напишите файл:
Разрешения расширены, и файл сохранен. Вам нужен восклицательный знак, потому что вы редактируете корневой файл как младший пользователь.
Объяснение того, что делает эта команда:
: W означает запись файла. Взрыв означает начать интерпретировать как оболочку. chmod означает изменение прав доступа, 777 означает полные права доступа везде. Процент означает текущее имя файла.
Это применяет изменение. И это спросить, если вы хотите перезагрузить. Нажмите «О» для «ОК». Не перезагружайте, иначе вы потеряете свои изменения.
18 Answers 18
Vim has a builtin help system. Running :h E212 inside Vim prints the following:
For some reason the file you are writing to cannot be created or overwritten. The reason could be that you do not have permission to write in the directory or the file name is not valid.
You might want to edit the file as a superuser with sudo vim FILE . Or if you don't want to leave your existing vim session (and now have proper sudo rights), you can run:
Which will save the file.
Thanks! In my case it was trying to edit a non-existing file in a non-existing directory. Turns out, while you can "open" non-existing file and then create it by saving it, this doesn't work with non-existing directory. And now I know about the Vim's built-in help system! :)
Thanks! In my case, I was trying to write to a network drive, and my network permissions had partially crashed for that screen session. I ended up writing out to a temporary file in /var and copying that from another ssh instance over to my home directory.
:h E212 says: ".bashrc" E212: Can't open file for writing E433: No tags file E149: Sorry, no help for E212
Linux: E212: Невозможно открыть файл для записи. [Решено]
Иногда, когда я создаю файл, используя vim some/path/newfile , vim позволяет мне редактировать его, только чтобы жаловаться, когда я пытаюсь сохранить свои изменения.
Это происходит только тогда, когда новый файл находится в системном каталоге.
:w! не отменяет эту ошибку.
Как я могу записать текущий буфер, не сохраняя его во временном месте, выйти, а затем переименовать его с помощью sudo?
- Кроме того, иногда, если вы поставите пробел между w а также ! , оно работает. (По крайней мере, это работает для меня в Linux с более тяжелым vim vim-gtk не просто легкий vim хотя я уверен, что он будет работать точно так же в обычном старом имени.) Я не знал о Peter ответ, однако. w!! у меня тоже работает.
Вам будет предложено ввести пароль root, а затем сохраните изменения, как вы просили:
Затем введите в командной строке (L) oad, чтобы повторно загрузить файл после его сохранения.
- 1 Это сработало! Может быть, его можно было бы объединить с ответом @Peter, чтобы создать псевдоним vim в файле .vimrc?
- 8 он говорит мне "оболочка вернулась 1"
Добавьте эту строку в свой .vimrc :
и тогда вы можете сделать
когда вы попадете в эту позицию, он запишет файл с помощью sudo. Очень удобно.
- Мне нравится эта идея. Ввод: w !! заменяет команду на !sudo tee > /dev/null , но в нем просто написано n "строк отфильтровано", а файл фактически не создается. Похоже, что это / dev / null?
- 4 Отличная идея - w!! запомнить гораздо легче, чем мое решение. Что мне подходит в OS X, так это cmap w!! %!sudo tee %
Вы можете mkdir сначала сохраните его.
- 5 Это не помогает. Вопрос не в каталогах, которых не существует. Речь идет о редактировании существующих файлов как (например) обычным пользователем, когда файл может быть записан только root. В этом случае нет отсутствующего каталога для создания.
Если вам нужно надежное, легко запоминающееся решение и вы не против установить плагин, попробуйте SudoEdit.vim - редактировать файлы с помощью sudo, su или любого другого инструмента.
Если это так в Windows 7 или более поздних версиях, запустите редактор VI от имени администратора. Щелкните приложение правой кнопкой мыши и выберите «Запуск от имени администратора». Этот вопрос будет решен. Причем ошибка связана с правами администратора.
вы можете попробовать сделать это в два шага: сначала создайте папку some и path с помощью mkdir ~; затем вы войдете в папку path, используйте команду: sudo vim newfile. затем сохраните ее
Как бы то ни было, вы также можете убедиться, что у вас достаточно места для хранения в разделе, где вы пытаетесь сохранить файл. Мне пришлось освободить место на моем / домашнем диске, и это решило проблему.
Убедитесь, что каталог, в котором вы пытаетесь сохранить файл, существует и у вас есть разрешение на редактирование файла.
Я пытаюсь редактировать sources.list с помощью редактора vi, но при сохранении файла получаю следующую ошибку:
В Vim есть встроенная справочная система. Я просто процитировал то, что он говорит :h E212 .
Вы можете отредактировать файл как суперпользователь как sudo vim FILE . Или, если вы не хотите покидать существующий сеанс vim (и теперь имеете надлежащие права sudo), вы можете выполнить:
Что сохранит файл.
- 60 Спасибо! В моем случае он пытался отредактировать несуществующий файл в несуществующем каталоге. Оказывается, хотя вы можете «открыть» несуществующий файл, а затем создать его, сохранив его, это не работает с несуществующим каталогом. И теперь я знаю о встроенной справочной системе Vim! :)
- Благодарность! В моем случае я пытался записать на сетевой диск, и мои сетевые разрешения были частично сброшены для этого сеанса экрана. В итоге я записал во временный файл в / var и скопировал его из другого экземпляра ssh в свой домашний каталог.
- Откат недействительной правки.
- @Xinus см. Это: stackoverflow.com/questions/2600783/…
- : h E212 говорит: ".bashrc" E212: Не могу открыть файл для записи E433: Нет файла тегов E149: Извините, для E212 нет помощи
Со мной такое случается все время, я открываю корневой файл для записи:
Вместо потери всех ваших изменений и повторного открытия с помощью sudo. Посмотрите эту демонстрацию того, как сохранить эти изменения:
Одноразовая демонстрация установки для создания корневого файла только для чтения для нижнего пользователя:
Сначала откройте файл как обычный пользователь:
Затем внесите некоторые изменения в файл, он предупредит вас, что он доступен только для чтения. Используйте эту команду.
Затем напишите файл:
Разрешения расширяются, и файл сохраняется. Вам нужен восклицательный знак, потому что вы редактируете корневой файл как меньший пользователь.
Объяснение того, что делает эта команда:
: W означает запись файла. Взрыв означает начало интерпретации как оболочку. chmod означает изменение разрешений, 777 означает полные разрешения везде. Процент означает текущее имя файла.
Применяет изменение. И он спрашивает, хотите ли вы перезагрузить. Нажмите «O» вместо «ОК». Не перезагружайте, иначе вы потеряете свои изменения.
- 1 chmod: невозможно изменить режим файла на vimrc: операция не разрешена
- когда используешь :w !chmod 777 % я получил chmod: changing permissions of ‘filename’: Operation not permitted .
Для меня было довольно простое решение. Я пытался редактировать / создавать файл в папке, которой не было. Поскольку я уже был в папке, я пытался редактировать / создавать файл в формате.
т.е. pwd folder/file
и, скорее всего, он искал папку в папке и не мог сохранить.
Или, возможно, вы подключены только для чтения.
Я ссылался на Zsolt на уровне 2, я ввел:
а затем в моей ситуации я все еще не могу изменить файл, поэтому он предложил добавить «!». поэтому я ввожу
тогда это работает
- 3 разве это не просто закрывает файл, а не сохраняет его?
для меня работал с изменением файловой системы из режима только для чтения перед запуском vim:
изменить пользователя на root
просмотреть и т. д.
найдите пользователя root в разделе привилегий пользователя. ты получишь это как
сделайте такую же запись для своего имени пользователя. если ваше имя пользователя "myuser", добавьте
это будет выглядеть как
сохрани это. измените пользователя root на своего пользователя. теперь попробуйте то же самое, где вы получали проблему с sudoers
- Это плохая практика. root следует использовать в крайнем случае.
Попробуйте подключиться как root, а затем отредактируйте файл. Это работает для меня
Предварительно добавьте свои команды с помощью sudo .
Например, вместо vim textfile.txt , используемый sudo vim textfile.txt . Это решит проблему.
Возможно, файл, к которому вы обращаетесь, уже имеет копию подкачки (или версию подкачки) в том же каталоге.
Поэтому сначала посмотрите, существует ли скрытый файл или нет.
Например, см. Следующие типы файлов
А затем удалите его с помощью .
Обычно я рекомендую начать использовать привилегии суперпользователя, используя .
Я получил эту ошибку, когда использовал git rm над файлом в каталоге.
Я был в чем-то вроде ~ / gitRepo / code / newFeature
В newFeature был только один файл. Я сделал git rm в этом файле затем попытался создать новый файл myNewFile с помощью vi.
Ubuntu показал, что я все еще нахожусь в каталоге newFeature, но на самом деле git rm удалил весь каталог.
Мне пришлось выйти из vi, перейти на один каталог вверх, а затем заново создать каталог newFeature.
Я получил эту ошибку, когда мой путь к каталогу неверен, убедитесь, что ваши имена каталогов и путь верны
I am trying to edit sources.list using vi editor but getting the following error while saving the file:
As a comment mentioned in one of the answers, you might get this if folder in which the file resides has been deleted or didn't exist in the first place. Look for commands for changing directory or creating a directory from vi, depending on the situation.
Not the answer you're looking for? Browse other questions tagged macos vim or ask your own question.
Linked
Related
Hot Network Questions
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.9.42071
11 Answers 11
This will ask you for the root password, then save your changes as you requested:
Then type (L)oad at the prompt, to re-load the file after it is saved.
This worked! Maybe it could be combined with @Peter's answer to create a vim alias in the .vimrc file?
Add this line to your .vimrc :
and then you can do
when you get into this position, and it will write the file using sudo. Very handy.
I like this idea. Typing :w!! replaces the command with !sudo tee > /dev/null , but it just says n "lines filtered" and the file is not actually created. It appears that the /dev/null is causing that?
Great idea -- w!! is much easier to remember than my solution. What works for me on OS X is cmap w!! %!sudo tee %
You can mkdir first, then save it.
This does not help. The question is not about directories that don't exist. It's about editing existing files as (for example) a normal user, when the file can be written by root only. In that case, there is no missing directory to create.
You can avoid this problem by using "sudo" to start the editing session.
If you want a robust, easy-to-remember solution and don't mind installing a plugin, try SudoEdit.vim - Edit Files using sudo or su or any other tool.
If this is the case in Windows 7 or later editions, run the VI editor as Administrator. Right Click of the application and select "Run as Administrator". This issue will be resolved. Moreover, the error is due to Administrative Privileges.
you can try to do it in two steps,first create the folder 'some' and 'path' by use mkdir ~ ;second you go into the 'path' folder,use the command:sudo vim newfile.then save it
Make sure the directory where you are trying to save the file exists and that you have permission to edit the file.
In particular, sometimes vim changes the current working directory of your buffer. In that case, an intermediate directory might not exist and that's what causes E212. You need to change the current directory back using :cd ORIGINAL_FOLDER_PATH to resolve this and be able to save again.
For what it's worth, you may also want to ensure you have sufficient storage in the partition where you're attempting to save the file. I had to free up some space in my /home drive and that resolved the issue.
I know this is an old question, but this is what fixed it for me. Your file might be set to immutable meaning that you can't edit it.
You can check this with lsattr /path/to/file.txt
If it is use chattr -i /etc/resolv.conf to make it no longer immutable.
Just had this issue outside of system directory. When I tried to open a file vim src/help/tips.c . Turns out help directory did not exist, the directory was named differently and it was one of those very rare occasions that I did not auto-complete with Tab .
So, in conclusion, if this happens for a file that is not at a place where you may have permission issues, look if the path leading up to the file is a valid one.
Читайте также: