Một giải pháp đơn giản nhưng hiệu quả sẽ là xác định một lệnh tự động khớp với các tên tệp có khả năng bị nhập sai, cảnh báo và chấm dứt việc lưu.
:autocmd BufWritePre [:;]* throw 'Forbidden file name: ' . expand('<afile>')
Lưu ý rằng lệnh :throw
là cần thiết để làm cho Vim ngừng viết những nội dung của một bộ đệm.
Để tránh bị lỗi E605
vì một ngoại lệ không bị bắt, một có thể phát ra lỗi khi sử dụng lệnh :echoerr
chạy trong khối try
. (:echoerr
tăng thông báo lỗi của nó như là một ngoại lệ khi gọi từ bên trong một cấu trúc try
. Xem :help :echoerr
.)
:autocmd BufWritePre [:;]*
\ try | echoerr 'Forbidden file name: ' . expand('<afile>') | endtry
Nếu nó bao giờ là cần thiết để lưu một tập tin với một tên phù hợp với mô hình được sử dụng trong trên tự động lệnh, người ta có thể thêm một lệnh viết với :noautocmd
hoặc đặt tùy chọn eventignore
cho phù hợp (xem :help :noautocmd
và :help eventignore
để biết thêm chi tiết), ví dụ
:noa w :ok.txt
Nguồn
2011-06-02 07:03:44
Tôi đoán bạn có thể sử dụng autocommand với 'BufWritePre' để cảnh báo bạn và không ghi tệp bắt đầu bằng'; * '. Nhưng tôi đang buồn ngủ ngay bây giờ và sẽ cho nó một shot bất cứ khi nào tôi thức dậy ... nếu nó chưa được trả lời bởi sau đó. – abcd