Vim-如果文件包含特定字符串,则防止保存/写入文件
我想阻止Vim保存包含以下文本的文件Vim-如果文件包含特定字符串,则防止保存/写入文件,vim,Vim,我想阻止Vim保存包含以下文本的文件 :style=> 这可能位于文件中的多个位置 作为奖励,如果它能出现一条错误消息,如“停止将样式内联!”那也太好了;) 谢谢 PS:我希望在尝试写入文件时触发此阻止操作:w单向 要执行此操作,请将save(:w)命令“绑定”到检查模式的函数: autocmd BufWriteCmd * call CheckWrite() 您的Check()函数可能如下所示: function! CheckWrite() let contents=getline
: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
最后,看一看。通过VCS的提交钩子强制执行这样的限制可能更为典型。例如,请参见
这将保留编辑器的功能,同时禁止提交有问题的代码。使用
BufWritePre
而不是InsertLeave
。true。这是解决问题的一种方法。我只是想要更直接一点的东西。我想我可以在VIM中设置一些简单的东西来帮助您。