Запретить сохранение файлов с определенными именами в Vim - PullRequest
16 голосов
/ 02 июня 2011

Я печатаю очень быстро и понимаю, что иногда я случайно сохраняю файл с именем ; или : (я печатаю :wq, а иногда вводится опечатка).

Есть лиспособ написать макрос, который отклоняет сохранение файлов, соответствующих определенным именам?

1 Ответ

17 голосов
/ 02 июня 2011

Простым, но эффективным решением было бы определение автоматической команды, совпадающей с потенциально ошибочно набранными именами файлов, которая выдает предупреждение и прекращает сохранение.

:autocmd BufWritePre [:;]* throw 'Forbidden file name: ' . expand('<afile>')

Обратите внимание, что для выполнения команды :throwVim прекращает запись содержимого буфера.

Чтобы избежать ошибки 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
...