gpt4 book ai didi

Vim - 如果文件包含特定字符串,则阻止保存/写入文件

转载 作者:行者123 更新时间:2023-12-04 15:59:07 25 4
gpt4 key购买 nike

我想阻止 Vim 保存包含以下文本的文件

:style=>

这可能存在于文件中的多个位置。

如果它能给出一条错误消息,如“停止将样式内联!”,作为奖励。那也太好了 ;)

谢谢!

PS:我希望在尝试写入文件时触发此阻止操作:w

最佳答案

一个方式

这样做是将保存 (:w) 命令“绑定(bind)”到检查模式的函数:

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 命令突出显示您的模式可能也是个好主意:

syntax match STOPPER /:style=>/
hi STOPPER ctermbg=red

最后看看this script .

关于Vim - 如果文件包含特定字符串,则阻止保存/写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com