Простым, но эффективным решением было бы определение автоматической команды, совпадающей с потенциально ошибочно набранными именами файлов, которая выдает предупреждение и прекращает сохранение.
:autocmd BufWritePre [:;]* throw 'Forbidden file name: ' . expand('<afile>')
Обратите внимание, что для выполнения команды :throw
Vim прекращает запись содержимого буфера.
Чтобы избежать ошибки E605
из-за необработанного исключения, можно выдать ошибку, используя команду :echoerr
, запущенную в блоке try
.(:echoerr
вызывает сообщение об ошибке как исключение при вызове из конструкции try
. См. :help :echoerr
.)
:autocmd BufWritePre [:;]*
\ try | echoerr 'Forbidden file name: ' . expand('<afile>') | endtry
Если когда-либо потребуется сохранить файл с именем, совпадающим сВ шаблоне, используемом в приведенной выше автоматической команде, можно добавить команду записи с помощью :noautocmd
или установить параметр eventignore
соответствующим образом (см. :help :noautocmd
и :help
eventignore
для получения более подробной информации), например,
:noa w :ok.txt