Как я могу получить список имен типов файлов, о которых в настоящее время знает vim?
Я хочу иметь возможность сделать это так, чтобы, когда vim автоматически не обнаруживал тип файла, я мог попробовать некоторые из типов файлов, о которых знает vim, которые могут быть похожими, и посмотреть, обеспечивают ли они разумную подсветку синтаксиса.
Я знаю, что файлы vimscript, имеющие дело с типами файлов, помещаются в ftplugin
каталог по соглашению, но они не должны быть (я не уверен, но я не думаю, что файлы vimscript в ftplugin
каталоге являются специальными), поэтому я хочу просто спросите vim, о каких типах файлов он знает, независимо от того, как он узнал о них.
syntax-highlighting
Praxeolitic
источник
источник
:setfiletype
(например,Tab
после пробела). Не уверен, что это полный список или как записать его в какой-нибудь буфер / файл.<c-d>
вместо<tab>
списка завершений.Ответы:
Простое решение
Введите
:setfiletype
(с пробелом после) , затем нажмитеCtrl-d
.Смотрите
:help cmdline-completion
подробнее об автозаполнении в командной строке vim.Сложное решение
Это решение использует
'runtimepath'
параметр для получения всех доступных каталогов синтаксиса, а затем извлекает список файлов vimscript в этих каталогах с удаленными их расширениями. Это может быть не самый безопасный способ сделать это, поэтому улучшения приветствуются:Затем вы можете использовать эту функцию любым удобным для вас способом, например, распечатать все значения в списке. Вы можете сделать это так:
Обратите внимание, что это, вероятно, может быть сжато немного, это так же для удобства чтения. Я не буду объяснять каждую функцию и команду, используемые здесь, но вот все справочные страницы для них:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
источник
set filetype<space><c d>
, он показывает мне список, но HTML нет в списке. Java нет в списке. Как показать имена типов файлов в смысле типов файлов, которые соответствуют конфигурациям форматирования синтаксиса?:setfiletype
не имеет типичного пробела между «set» и «filetype». Вы можете найти больше информации с:help :setfiletype
и:help ftdetect
.:setfiletype ht<Ctrl+D>
для перечисления тип файла, начиная с ht, который фильтрует нежелательные результаты. :)Если ваша версия vim достаточно свежая (v7.4.2011 +), вы можете запросить известные типы файлов с помощью функции, которую мы теперь можем использовать, чтобы помочь определить автозаполнение вручную:
getcompletion()
Если вы хотите ограничить список типами файлов, начинающимися с a
'c'
, вы должны вызватьи так далее.
Примечание: в отличие от решений, которые анализируют имена файлов и каталогов
$VIMRUNTIME/{syntax,filetype}/
, это решение также анализирует'runtimepath'
. Насколько я понимаю, он не видит новые типы файлов, определенные / зарегистрированные на летуset ft=foobar
, ни после автокоманд.источник
Вы также можете распечатать все типы файлов в терминале, выполнив следующие 2 команды:
1.
2.
Первая команда просто переходит к вашему пути выполнения vim (для меня это был / usr / share / vim / vim80 ).
Вторая команда выводит список всех имен типов файлов в двух папках, где vim хранит определения типов файлов.
Обновить
Предлагаемые улучшения для двух команд от muru, которые предлагают:
1.
2.
источник
tr
преобразование новых строк в ноль только для преобразования его в следующую команду, выполняйте подстановку, когда выполняется простая группировка команд. Я бы предложил что-то вроде:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Думаю.printf
это встроено в него ):f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. См. «Расширение параметров» на странице руководства Bash для объяснения иероглифов.bash
, которые «не являются реальными плагинами типов файлов ... и получат эффект типа файлов« sh »»Попробуйте посмотреть в $ VIMRUNTIME / синтаксис. Используйте: echo $ VIMRUNTIME, чтобы узнать его значение. На моем компьютере $ VIMRUNTIME / синтаксис был / usr / share / vim / vim81 / синтаксис. В нем есть все файлы синтаксиса.
Если у вас есть vim с графическим интерфейсом, вы также можете использовать меню синтаксиса, чтобы получить все поддерживаемые типы файлов.
источник