Я хотел бы создать следующий фрагмент реакции для компонента без состояния.
import React from 'react';
const fileName= (props) => {
}
export default fileName;
пока я следую
<snippet>
<content><![CDATA[
import React from 'react';
const ${1:${TM_FILENAME/(.+)..+..+/$1/}} = (props) => {
}
export default ${1:${TM_FILENAME/(.+)..+..+/$1/}};
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<!-- <tabTrigger>hello</tabTrigger> -->
<tabTrigger>less</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
</snippet>
который выводит
import React from 'react';
const FileName= (props) => {
}
export default FileName;
Как сделать первую букву имени файла строчной?
Кстати, что вы сопоставили с (.+)..+..+? Схема странная.
wiktor спасибо за ваш ответ, он действительно работает :) как вы это написали. Я не писал этот код регулярного выражения, и у меня очень ограниченное понимание того, что там происходит. Единственная проблема сейчас в том, что последняя буква имени файла обрезана. Понятия не имею почему.
Вы имеете в виду, что соответствуете последнему .? Попробуйте ${1:${TM_FILENAME/(.+)\..*/\l$1/}} или ${1:${TM_FILENAME/^(.*?)(\.[^.]*)?$/\l$1/}}





Согласно Документация по фрагменту SublimeText, разновидностью регулярного выражения здесь является Увеличение, и он поддерживает операторы изменения регистра в шаблоны замены.
Вы можете использовать следующее исправление:
${1:${TM_FILENAME/(.+)..+..+/\l$1/}}
^^
Оператор \l переводит первый символ, стоящий справа от оператора, в нижний регистр.
Другие варианты:
\l Causes the next character to be outputted, to be output in lower case.
\u Causes the next character to be outputted, to be output in upper case.
\L Causes all subsequent characters to be output in lower case, until a \E is found.
\U Causes all subsequent characters to be output in upper case, until a \E is found.
\E Terminates a \L or \U sequence.
Обратите внимание, что ваш шаблон выглядит некорректно, поскольку он захватывает любой 1 или более символов ((.+)) до последних четырех (..+..+ соответствует этим последним 4 символам в строке из-за первого жадного шаблона). Это может не делать то, что вам нужно.
Если вы планируете захватить любой текст до последней точки, если она есть, используйте
${1:${TM_FILENAME/^(.*?)(\.[^.]*)?$/\l$1/}}
куда
^ - начало строки(.*?) - Группа 1 ($1): любые символы 0+, кроме символов разрыва строки, как можно меньше(\.[^.]*)? - Группа 2 (необязательно): ., а затем любые символы 0+, кроме .$ - конец строки.
Попробуйте
${1:${TM_FILENAME/(.+)..+..+/\l$1/}}