Как расширить текущее имя файла без 'test' в vimscript или UltiSnips - PullRequest
0 голосов
/ 25 января 2019

Я пишу фрагмент, в котором мне нужно получить текущее имя файла в vimscript. Я могу сделать это счастливо с expand('%:t:r') (как показано здесь ). Однако я хотел бы не только исключить «.js» из имени файла, но и «.test».

, например

Если в myName.test.js, я бы хотел взять 'myName'

Если в myName.js, я также хотел бы получить 'myName'

Я делаю это, чтобы создать фрагмент UltiSnips, чтобы другие методы (например, regex) также были бы полезны

1 Ответ

0 голосов
/ 25 января 2019

:t и :r являются модификаторами имени файла. Если вы следуете за :help filename-modifiers, есть также отличный (но малоизвестный) модификатор :s?pat?sub?, который может выполнять замены. Поскольку это можно комбинировать с другими модификаторами, все, что вам нужно сделать, это сопоставить .test с привязкой к концу имени файла:

:echo expand('%:t:r:s?\.test$??')

Нет ошибки, если замена не удалась, поэтому нет необходимости делать опциональное совпадение (через \?).

...