Prevent saving files with certain names in Vim

前端 未结 1 1699
梦如初夏
梦如初夏 2021-01-01 18:53

I type really fast and realize that sometimes I accidentally save a file with the name of ; or : (I type :wq and sometimes a typo is i

相关标签:
1条回答
  • 2021-01-01 19:28

    A simple yet effective solution would be to define an auto-command matching potentially mistyped file names, that issues a warning and terminates saving.

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

    Note that the :throw command is necessary to make Vim stop writing the contents of a buffer.

    In order to avoid getting the E605 error because of an uncaught exception, one can issue an error using the :echoerr command run in the try block—:echoerr raises its error message as an exception when called from inside a try construct (see :help :echoerr).

    :autocmd BufWritePre [:;]*
    \   try | echoerr 'Forbidden file name: ' . expand('<afile>') | endtry
    

    If it is ever needed to save a file with a name matching the pattern used in the above auto-command, one can prepend a writing command with :noautocmd or set the eventignore option accordingly (see :help :noautocmd and :help eventignore for details), e.g.:

    :noa w :ok.txt
    
    0 讨论(0)
提交回复
热议问题