Ну, не знаю, почему вы хотите сделать это в Vim, вероятно, есть лучшие инструменты для этого.
Однако, есть способ сделать это в Vim. Возможно, это также можно сделать более интерактивно, используя макросы и :s
magic;)
Сначала определите функцию Vim:
func DirContents2Json()
let list=glob('*.mp3', 0, 1)
let b=map(sort(copy(list)), { i, v -> {'file': v}})
return json_encode({'audio': b})
endfunc
Эта функция сначала возвращает список всех mp3-файлов в текущем каталоге, а затем преобразует возвращенный список в список словарей, используя лямбда-выражения.И, наконец, он возвращает словарь с ключом 'audio', который содержит список, и преобразует его в json, используя функцию json_encode()
.
Чтобы запустить его, откройте Vim в каталоге с вашими файлами, а затем вызовите :call append('$', DirContents2Json())
.Для правильного форматирования вы можете использовать, например, !!python -m json.tool
или что-то подобное.
Для этого требуется как минимум Vim 8.1