определить тип файла без расширения - PullRequest
0 голосов
/ 15 января 2019

Я хочу использовать pygmentize для выделения некоторых файлов скриптов (python / bash / ...) без расширения. Но pygmentize требует, чтобы я указал лексер, используя -l. Он не определяет тип файла автоматически из содержимого.

У меня под рукой есть следующие опции, но сейчас ни один из них не работает:

  1. используйте file -b --mime-type. Но эта команда выводит x-python и x-shellscript вместо python и bash, и я не знаю правил
  2. использовать vim -e -c 'echo &ft|q' the_file. Для любого файла с расширением или без него у vim есть механизм, позволяющий угадать тип файла. Но это не работает. Так как вывод идет в окно vim и исчезает после q.

Что я могу сделать?


@ Метод Самборского нормально работает в обычном случае, но не работает в python subprocess.check_output, так как pts не выделен. Если вы используете nvim, вы можете использовать этот более простой способ:

HOME=_ nvim --headless -es file <<EOF
call writefile([&ft], "/dev/stdout")
EOF

1 Ответ

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

Вы можете использовать vim следующим образом:

vim -c ':silent execute ":!echo " . &ft . " > /dev/stdout"' -c ':q!' the_file

Он просто создает команду для запуска в оболочке в виде конкатенации строк.

...