Я хочу использовать pygmentize
для выделения некоторых файлов сценариев (python/bash/...) без расширения. Но pygmentize
требует, чтобы я указал лексер, используя -l
. Он не определяет автоматически тип файла по содержимому.
У меня есть следующие варианты под рукой, но ни один из них не работает сейчас:
- используйте
file -b --mime-type
. Но эта команда выводитx-python
иx-shellscript
вместоpython
иbash
и я не знаю правила - используйте
vim -e -c 'echo &ft|q' the_file
. Для любого файла с расширением или без него в vim есть механизм определения типа файла. Но это не работает. Так как вывод идет в окно vim и исчезает послеq
.
Что я могу сделать?
Метод @Samborski отлично работает в обычном случае, но не работает в python subprocess.check_output
, поскольку точки не выделены. Если вы используете nvim
, вы можете использовать этот более простой способ:
HOME=_ nvim --headless -es file <<EOF
call writefile([&ft], "/dev/stdout")
EOF
vim
имеет много кода для обработки этого.file
также может это сделать, но его вывод не является чем-то, что может быть напрямую использовано pygmentize - person doraemon   schedule 15.01.2019