Почему Vim считает, что файл доступен только для чтения, если это не так? - PullRequest
0 голосов
/ 11 января 2020

Я редактирую файлы с помощью Vim 8.1 на MacOS Mojave, и недавно я заметил, что когда я открываю различные файлы, вносите изменения, а затем пытаюсь сохранить файл, Vim говорит

"E45: 'readonly' option is set (add ! to override)" 

когда у меня уже есть права на чтение и запись в файл.

Я проверил права доступа к каждому файлу и владею ими, и разрешения всегда либо "-rwx-r-xr-x", либо "-rw-r-r-".

Выход из Vim и запуск chmod для перезаписи прав доступа к файлам не решают проблему. Единственный способ исправить это - ":w!" внутри Vim.

Каковы возможные причины этого?

1 Ответ

2 голосов
/ 11 января 2020

Независимо от того, какие у вас есть права доступа к файлу, в Vim есть возможность установить редактор в режиме только для чтения , заставляя вас использовать :w! для сохранения. Судя по сообщенной вами ошибке, это похоже на ваш случай.

Просмотрите справку Vim, используя :help, как для чтения, так и для ошибки 45 ("E45").

:help E45
 'readonly' option is set (add ! to override)

You are trying to write a file that was marked as read-only.  To write the
file anyway, either reset the 'readonly' option, or add a '!' character just
after the command you used.
:help readonly
'readonly' 'ro'         boolean (default off)
                        local to buffer
If on, writes fail unless you use a '!'.  Protects you from
accidentally overwriting a file.  Default on when Vim is started
in read-only mode ("vim -R") or when the executable is called "view".
When using ":w!" the 'readonly' option is reset for the current
buffer, unless the 'Z' flag is in 'cpoptions'.
{not in Vi:}  When using the ":view" command the 'readonly' option is
set for the newly edited buffer.

Как говорится в сообщении об ошибке, в вашем редакторе этот флаг включен по умолчанию. Вы можете проверить следующее:

  • посмотрите, есть ли у команды vim псевдоним, навязывающий флаг -R
  • , проверьте конфигурацию .vimrc для любого set ro строка, которая может включать эту опцию

Если что-то из этого имеет место, вы знаете, что делать, удалите -R из псевдонима и строку set ro. Вы всегда можете отключить эту опцию в конфигурации .vimrc, добавив строку set noro.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...