Как расширить текущее имя файла без 'test' в vimscript или UltiSnips
Я пишу фрагмент, в котором мне нужно получить текущее имя файла в vimscript. Я могу сделать это счастливо с expand('%:t:r')
(как показано здесь). Однако я хотел бы не только исключить ".js" из имени файла, но и ".test".
например
Если в myName.test.js
Я хотел бы получить "myName"
Если в myName.js
Я также хотел бы получить "myName"
Я делаю это, чтобы создать фрагмент UltiSnips, чтобы другие методы (например, регулярное выражение) также были бы полезны
1 ответ
:t
а также :r
являются модификаторами имени файла. Если вы следуете :help filename-modifiers
Есть также отличный (но малоизвестный) :s?pat?sub?
модификатор, который может выполнять замены. Поскольку это можно комбинировать с другими модификаторами, все, что вам нужно сделать, это сопоставить .test
привязанный к концу имени файла:
:echo expand('%:t:r:s?\.test$??')
Там нет ошибки, если замена не удалась, поэтому нет необходимости делать сопоставление необязательным (через \?
).