Что означает = ~ в VimScript?
Я не могу на всю жизнь найти ответ на это либо в Google, либо здесь, либо в файлах справки.
if "test.c" =~ "\.c"
Сначала я думал, что =~
означает концы, но наблюдайте эти результаты:
Command Result
echo "test.c" =~ "\.c" 1
echo "test.c" =~ "\.pc" 0
echo "test.pc" =~ "\.c" 1
echo "testc" =~ "\.c" 1
echo "ctest" =~ "\.c" 1
echo "ctestp" =~ "\.pc" 0
echo "pctestp" =~ "\.pc" 0
echo ".pctestp" =~ "\.pc" 0
Объяснение было бы замечательным. Ссылка на сайт, пытающийся расшифровать VimScript, будет еще лучше.
Ответы
Ответ 1
Из документации Vim, она соответствует совпадению шаблона правого операнда (в виде шаблона) в левой части.
Для строк есть еще два элемента:
a =~ b matches with
a !~ b does not match with
Левый элемент "a" используется как строка. Правильный элемент "b" используется как шаблон, например, используемый для поиска. Пример:
:if str =~ " "
: echo "str contains a space"
:endif
:if str !~ '\.$'
: echo "str does not end in a full stop"
:endif
Вы можете снова попробовать свои тестовые примеры. Я, например, не согласен с вашим:
echo ".pctestp" =~ "\.pc" 1
И двойные кавычки против одиночных кавычек, похоже, влияют на то, как интерпретируется обратная косая черта:
echo "test.pc" =~ "\.c" 1
echo "test.pc" =~ '\.c' 0
Ответ 2
Из документов:
-
http://vimdoc.sourceforge.net/htmldoc/usr_41.html
Для строк есть еще два элемента:
a =~ b matches with
a !~ b does not match with
Левый элемент "a" используется как строка. Правильный элемент "b" используется как
шаблон, как то, что используется для поиска. Пример:
:if str =~ " "
: echo "str contains a space"
:endif
:if str !~ '\.$'
: echo "str does not end in a full stop"
:endif