Как сказать vim не пытаться разархивировать файл

15

Я пытаюсь открыть .xlsxфайл в Vim, но получаю сообщение об ошибке:

***error*** (zip#Browse) unzip not available on your system  

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

Я заметил, что если я меняю расширение, Vim больше не пытается его разархивировать. Что приводит меня к моему вопросу:

Есть ли способ сказать Vim, чтобы открыть файл, не пытаясь распаковать его?

FWIW, я использую Vim 7.4 под Windows 7.

Roflo
источник
Я получаю ту же ошибку в моей системе Linux, так что это не похоже на поведение Windows
Martin Tournoij
1
Просто из любопытства, почему вы делаете контрольные суммы / гекс изнутри vim?
Random832 25.02.15
@ Random832 по этому поводу, просто потому, что это первое, что пришло мне в голову. В большинстве случаев, потому что я могу проверить контрольную сумму диапазона вместо целого файла, и шестнадцатеричный, потому что я могу переключаться назад и вперед с помощью raw.
Roflo

Ответы:

16

Такая функциональность обрабатывается autocmds . Чтобы отключить autocmds для конкретной команды, вы можете использовать :noautocmd(сокращенно :noau). В таком случае

:noau e foo.xlsx

просто откроет необработанный файл, а не вызовет autocmds, которые пытаются открыть файл zip.

Вы также можете использовать это из вашей оболочки:

$ vim -c 'noau e foo.xlsx'

Если вы хотите больше детализации, чем отключение всех autocmds, вы можете временно отключить BufRead/ BufReadPreautocmds, используя 'eventignore'опцию.

:set ei=BufRead,BufReadPre
:e foo.xlsx
:set ei=
jamessan
источник
Также возможно отключить только autocmd/ augroupкак определено плагином zip? Мне нравится это (+1), но если у вас, например, есть возможность autocmdотключить подсветку синтаксиса и тому подобное для больших файлов (как обычно), то вы также отключите это как побочный эффект ...
Мартин Турной,
@Carpetsmoker Не временно. Если вы знаете имя группы (в данном случае «zip»), вы можете отменить все autocmds, определенные в этой группе, с помощью augroup zip | exe 'au!' | augroup END.
jamessan
10

Это похоже на плагин "zip", который поставляется с Vim и включен по умолчанию.

:help zip имеет некоторую информацию об этом, среди прочего:

ПРЕДОТВРАЩЕНИЕ ЗАГРУЗКИ

Если по какой-то причине вы не хотите использовать vim для проверки заархивированных файлов, вы можете поместить следующие две переменные в ваш <.vimrc>, чтобы предотвратить загрузку zip-плагина:

let g:loaded_zipPlugin= 1                                               
let g:loaded_zip      = 1                                               

После добавления этих двух строк я могу открыть .zipфайл как любой другой файл.

Кстати, об этом я тоже не знал; но упомянутое сообщение об ошибке zip#Browse, поэтому я просто набрал :help zipи приземлился на нужной странице документации :-)

См. Как мне перейти к темам в документации Vim? для получения дополнительной информации и советов о справочной системе Vim.

Это также будет работать для tarплагина, если вы не используете g:loaded_tarPlugin& g_loaded_tar.

Мартин Турной
источник
Это делает трюк. Жаль, что я не могу +2 за ссылку на вопрос документации.
Roflo
@Roflo Я не могу взять кредит на этот пост, это все работа Ромейнла :-)
Мартин Турной