Vim - запретить сохранение / запись файла, если он содержит определенную строку - PullRequest
3 голосов
/ 26 февраля 2011

Я бы хотел запретить Vim сохранять файл, если он содержит следующий текст

:style=>

Это может быть в нескольких местах в файле.

В качестве бонуса, если появится сообщение об ошибке типа «прекратить помещать стили в строку!» это тоже было бы здорово;)

Спасибо!

PS: Я бы хотел, чтобы это действие не запускалось при попытке записать файл: w

Ответы [ 2 ]

7 голосов
/ 26 февраля 2011

Один способ

, чтобы сделать это, состоит в том, чтобы «привязать» команду сохранения (: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

Наконец, взгляните на этот скрипт .

0 голосов
/ 26 февраля 2011

Это может быть более типичным для применения таких ограничений через хук коммитов вашей VCS. См., Например, http://git -scm.com / docs / githooks .

Это оставит возможности вашего редактора без изменений при запрете совершения оскорбительного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...