我的 markdown 文件中有很多 python 代码示例,它们应该以>>>
符号开头。
所以我写了一个 vim 函数来完成这项工作:
function AddShellPrompt() range
let lnum = a:firstline
while lnum <= a:lastline
let replaced_line = substitute(getline(lnum), '^\s\+', '&>>>', '')
call setline(lnum, replaced_line)
let lnum += 1
endwhile
endfunction
问题是,对于像这样的原始文本:
pow(2, 3)
8
我只需要添加>>>
之前pow(2, 3)
,但不需要之前8
。所以我需要扩展我的正则表达式。
我想到如果我只添加>>>
包含任何字符的行+-*/%(=
。
我可以获得相当不错的结果(尽管并不完美)。
但问题是,如何编写正则表达式(尤其是在 vim 中)来表达给定集中的某些字符已出现在当前行中?
答案1
vim
正则表达式引擎支持括号表达式,您可以将一类字符定义为方括号括起来的字符序列[...]
:
/[+\-*/%(=]/
将匹配这些字符中的任何字符(您需要转义-
,它定义了字符之间的范围,以按字面匹配它)
要检查当前行是否包含任何字符集:
if getline(".") =~ '[+\-*/%(=]'
echo "Match"
endif