Я пытаюсь сделать фрагмент, который поможет мне выбрать правильную ревизию номер для миграции, прочитав все файлы миграции из application/migrations
.Ускоренный фрагмент интерполяции с помощью ultisnips python, извлечение числа из имени файла
Что мне удалось сделать сам, что мои имена файлов фильтруется в то время как я типирование, и когда только один матч оставил вставить свой номер ревизии в позиции курсора (которые являются первые 14 символов из файла всегда).
Проблема заключается в том, что, когда я нажимаю TAB, чтобы выбрать, я также оставил с тем, что я набраны до сих пор для поиска этого пересмотра числа, а это означает что-то вроде этого remo20160812110447
.
Вопрос в том, как избавиться от этого remo
в этом случае !?
ПРИМЕЧАНИЕ. Пример использует жестко заданные значения, для более легкого тестирования они будут позже заменены на # lst = os.listdir('application/migrations')
.
Также дополнительный бонус эффект будет представить эти 20160710171947
значения в читаемом формате даты при выборе, но после удара TAB вставить их оригинальную версию исходного кода.
global !p
import datetime
def complete(t, opts):
if t:
opts = [ m for m in opts if t in m ]
if len(opts) == 1:
return opts[0][:14]
return "(" + '|'.join(opts) + ')'
endglobal
snippet cimigration "Inserts desired migration number, obtained via filenames"
$1`!p import os
# lst = os.listdir('application/migrations')
lst = [
'20160710171947_create.php',
'20160810112347_delete.php',
'20160812110447_remove.php'
]
snip.rv = complete(t[1], lst)`
endsnippet
Я был бы более чем счастлив знать причину, почему человек 'x' вниз проголосовали этот вопрос. Вопрос не в том, что сам python, так как это было бы легко решено, чем, но поведение плагина в этом случае. – branquito
Я не являюсь нисходящим, но я бы хотел обсудить две вещи: вы можете нажать кнопку «flag», чтобы попросить модератора переместить вопрос на [vi.SE] (http: //vi.stackexchange. com /), там может помочь больше людей.Кроме того, я никогда не использовал ultisnips, но я бы сказал, что это не так сложно писать в чистом vimscript. Вы можете использовать 'split (globpath ('application/migrations', '* .php'))', чтобы получить список, а затем 'viwc', как только вы нажмете' '. –
grochmal
точка фильтрует результаты при наборе текста, тем самым сужая результаты поиска, не получая простой список файлов – branquito