我试图为打字机功能添加ctrlp-funky的正则表达式但是它正在捕捉if和switch。
如何修改此正则表达式,使其不包含if
或switch
的字词或包含{}
的函数调用。
\v\s*\w+\s*\(.*\{
它应该能够匹配这些
greet() {
ifExists() {
public static greet(a: any) {
但应排除。 (注意空格和{
内的(
)。
if (x) {
if(x) {
switch (x) {
helloworld({a: null});
答案 0 :(得分:1)
这应该会更好一点:
\v\s*<(for>|if>|switch>|while>)@!\w+\s*\(.{-}\)\s*\{
<
和>
是字边界。它们将匹配单词的左右边缘。@!
是一个负面的预测。它将匹配不遵循的内容。{-}
是一个懒惰的重复,零次或多次。与*
类似,但会尽可能少地匹配。它将匹配任何与关键字不匹配的函数调用模式。
它并不完美,因为它与嵌套括号不匹配。仅仅在vim中使用正则表达式是不可能的。例如:
foo(lock(foo) { })
答案 1 :(得分:0)
虽然我不知道你使用什么类型的文件,但实际上可以使用 post_extract_hook ,这是一个无证件。 我想你想要做的是类似于下面的java&#39; https://github.com/tacahiroy/ctrlp-funky/blob/master/autoload/ctrlp/funky/ft/java.vim#L22
总是赞赏Pull请求:)