Один способ
, чтобы сделать это, состоит в том, чтобы «привязать» команду сохранения (:w
) к функции, которая проверяет ваш шаблон:
autocmd BufWriteCmd * call CheckWrite()
где ваша Check()
функция может выглядеть следующим образом:
function! CheckWrite()
let contents=getline(1,"$")
if match(contents,":style=>") >= 0
echohl WarningMsg | echo "stop putting styles inline!" | echohl None
else
call writefile(contents, bufname("%"))
set nomodified
endif
endfunction
Обратите внимание, что в этом случае вы должны предоставить механизм «сохранения файла» самостоятельно (вероятно, не очень хорошая идея, но работает хорошо).
Более безопасный способ
будет к set readonly
, когда появится ваш паттерн:
autocmd InsertLeave * call CheckRO()
и выдаст предупреждение при попытке сохранить:
autocmd BufWritePre * call Warnme()
где CheckRO()
и Warnme()
будут выглядеть примерно так:
function! CheckRO()
if match(getline(1,"$"),":style=>") >= 0
set ro
else
set noro
endif
endfunction
function! Warnme()
if match(getline(1,"$"),":style=>") >= 0
echohl WarningMsg | echo "stop putting styles inline!" | echohl None
endif
endfunction
Выделите
Также, вероятно, хорошей идеей будет выделить вашшаблон с помощью команды hi
+ syntax match
:
syntax match STOPPER /:style=>/
hi STOPPER ctermbg=red
Наконец, взгляните на этот скрипт .