Предотвратить vim от открытия двоичных файлов случайно?

Я часто случайно открываю двоичный исполняемый файл, то есть "foo", когда я хочу открыть связанный исходный код "foo.cpp". Корень проблемы заключается в том, что завершение табуляции, т.е. :e fo<tab>, обычно приземляется на двоичный код вместо исходного кода.

Есть ли способ получить vim только для заполнения полных имен текстовых файлов? Или, наоборот, измените порядок завершения табуляции?

Иногда моя поспешная ошибка завершения табуляции происходит за пределами vim; для этих случаев, что является лучшим способом предотвратить vim от открытия файлов, которые не являются текстом?

Ответ 1

Не то, что вам нужно, но у меня есть что-то подобное в моем .vimrc

" ignore these files when completing names and in Ex
set wildignore=.svn,CVS,.git,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif,*.pdf,*.bak,*.beam
" set of file name suffixes that will be given a lower priority when it comes to matching wildcards
set suffixes+=.old

Ответ 2

Для завершения вкладки вне vim это будет зависеть от вашей оболочки. Большинство оболочек имеют некоторую форму поддержки автозаполнения. В частности, Zsh имеет возможность автозаполнения, например. удаленные хосты для ssh. Я не мастер с этими вещами, но, вероятно, было бы относительно просто заставить вашу оболочку отбрасывать файлы с определенными суффиксами из списка автозаполнения, когда команда, которую вы вводите, начинается с "vim".

Быстрый поиск Google включает эту страницу, которая имеет следующее:

# Filename suffixes to ignore during completion (except after rm command)
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \
'*?.old' '*?.pro'

Не нужно слишком сложно модифицировать эту логику, чтобы получить то, что вы хотите (если вы используете Zsh).