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


15

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

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

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

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

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

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


Я получаю ту же ошибку в моей системе 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=

Также возможно отключить только 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 Я не могу взять кредит на этот пост, это все работа Ромейнла :-)
Мартин Турной
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.