Фильтр типа файла диалога открытия gvim

Мне нравится иногда использовать браузер файлов в gvim, однако мне не нравится, что фильтр файлов всегда настроен на текущий редактируемый тип файла.

Например, если у меня есть файл .cpp, открытый в текущем буфере, и я перехожу к диалоговому окну открытия файла, для фильтра файлов установлено значение «Исходные файлы C++ (*.cpp *.c++)». Я бы предпочел, чтобы заголовки тоже отображались по умолчанию (скажем).

Есть ли способ изменить это поведение по умолчанию?


person ozbob    schedule 26.03.2014    source источник
comment
Вы говорите о :browse? Если да, прочитайте :help :browse, особенно часть о browsefilter.   -  person benjifisher    schedule 26.03.2014
comment
@benjifisher: Я совершенно пропустил это! Это именно то, что мне было нужно, спасибо.   -  person ozbob    schedule 26.03.2014


Ответы (3)


Благодаря @benjifisher я нашел помощь для :browse, которая показывает, как делать то, что я хотел. В частности, подключаемый модуль типа файла по умолчанию для C/C++ содержит следующие строки:

let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" .
 \ "C Header Files (*.h)\t*.h\n" .
 \ "C Source Files (*.c)\t*.c\n" .
 \ "All Files (*.*)\t*.*\n"

Я скопировал файл в свой локальный каталог vim ftplugin и изменил его по своему вкусу, который теперь имеет приоритет над системной версией.

person ozbob    schedule 26.03.2014
comment
Я пробовал это в vim 7.4 (версия GTK2) в Ubuntu 14.04, но это не работает. Подозреваю, что это не реализовано. У кого-нибудь есть идеи? - person Mike; 14.01.2015
comment
@Mike Я сделал это в Debian, поэтому сильно подозреваю, что это сработает в Ubuntu. Чтобы уточнить, что я сделал: я скопировал /usr/share/vim/vim74/ftplugin/c.vim в ~/.vim/ftplugin/c.vim и изменил соответствующую строку let b:browsefilter =.... - person ozbob; 15.01.2015
comment
Спасибо ozob, действительно работает. Я попытался добавить изменение переменной в ~/.vimrc, но это не дало никакого эффекта. - person Mike; 15.01.2015

Если кому-то, как и мне, нужен быстрый и простой способ полностью отключить это поведение в vimrc:

autocmd FileType * let b:browsefilter = '' 

Из первого ответа в этой теме

person Ozone    schedule 19.04.2015
comment
Кажется, это не работает, по крайней мере, больше. Вместо этого мне пришлось использовать autocmd FileType * let b:browsefilter = 'All Files\t*\n'. - person Francesco Marchetti-Stasi; 16.11.2020

У меня была аналогичная проблема, которую я решил, не копируя файл c.vim в ~/.vim/ftplugin. Для поддержки *.cc в качестве расширения C++ в GVim на Ubuntu я отредактировал файл /usr/share/vim/vim74/ftplugin/c.vim, чтобы добавить расширение:

let b:browsefilter = "C++ Source Files (*.cpp *.c++ *cc)\t*.cpp;*.c++;*.cc\n" . \ "C Header Files (*.h)\t*.h\n" . \ "C Source Files (*.c)\t*.c\n" . \ "All Files (*.*)\t*.*\n"

Затем перезапустил GVim, и он заработал без копирования c.vim.

person MarkSWeiss    schedule 14.02.2016
comment
Плохая идея. Скорее всего, он будет перезаписан при следующем обновлении Vim. Копирование — это нормально, или просто создайте ~/.vim/ftplugin/c.vim, который просто устанавливает эту переменную. - person muru; 15.02.2016
comment
Хорошо, это правда, и я не подумал об этом, хотя я записал внесенное изменение на случай, если мне понадобится сделать это снова. Спасибо! - person MarkSWeiss; 17.02.2016