Я просто добавлю здесь примечание для тех, кто пришел в этот вопрос-ответ по другой причине.
Если вы видите *
в конце имени файла в выводе ls
(на самом деле ls -F
, но ls
иногда называется ls -F
(или ls-F
, встроенный в tcsh
), или zsh
или tcsh
, это нечто совершенно иное.
С опцией -F
, ls
добавляет символ конца в конце некоторых специальных имен файлов, чтобы помочь определить их особенность. zsh
и tcsh
делают то же самое при выводе завершений имен файлов.
Если вы видите:
$ ls -F
dir/ fifo| file link@ ls* socket=
Те /
, |
, *
и =
не являются частью имени файла (хотя могли бы быть, если бы кто-то пытался вас обмануть), но добавляются ls
, чтобы сообщить вам об этом:
dir
- каталог (/
)fifo
- именованная труба/fifo (|
)link
- символическая ссылка (@
)ls
- исполняемый обычный файл (*
) (имеет по крайней мере один бит исполнения бит в его разрешениях)socket
- сокет домена Unix (=
)Некоторые реализации ls
(и завершение zsh
) также могут делать эту дифференциацию через цвета для терминалов, которые поддерживают их с различными опциями.
Поскольку шаблоны, как правило, не являются непересекающимися, важен порядок, в котором выполняются команды :filetype
. Вероятно, вы поместили тип файла *.sql /opt/sublime_text_3
после тип файла * ...
, который улавливает все и, следовательно, должен быть последним.
Вы можете проверить, какое приложение будет запущено для sql-файла, выполнив:
:filetype a.sql
Появится всплывающее меню, показывающее список приложений, которые vifm попытается выполнить, в порядке сверху вниз.