微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vim – 如果文件包含某些字符串,则阻止保存/写入文件

如果文件包含以下文本,我想阻止Vim保存文件

:style=>

这可能在文件中的多个位置.

作为奖励,如果它可以提出一个错误消息,如“停止内联样式!”那也很棒;)

谢谢!

PS:我希望这可以防止在尝试写入文件时触发操作:w

解决方法

单程

这样做是为了将save(: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

请注意,在这种情况下,您必须自己提供“保存文件”机制(可能不是一个好主意,但效果很好).

一种更安全的方式

当您的模式出现时,将设置只读:

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 STOPPER /:style=>/
hi STOPPER ctermbg=red

最后,看看this script.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐