Почему vi явно не работает (ошибка viminfo E576) и как я могу это исправить?

18

Я опытный в использовании Unix / Linux, но я не эксперт. Если я хочу открыть файл (например, file.txt), я использую vi:

vi file.txt

Это открывает файл, и если я хочу закрыть его, я использую :q!. Я использовал этот метод в течение двух лет, что я использую Unix / Linux. В моем учреждении есть кластер под управлением Ubuntu Linux.

Однако сегодня я попытался открыть файл и получил следующие сообщения об ошибках:

E576: viminfo: Missing '>' in line: newest to oldest):
E576: viminfo: Missing '>' in line: ?/CJ
E576: viminfo: Missing '>' in line: ?/CG
E576: viminfo: Missing '>' in line: ?/CC
E576: viminfo: Missing '>' in line: ?/OEP
E576: viminfo: Missing '>' in line: ?/CEP
E576: viminfo: Missing '>' in line: ?/dih
E576: viminfo: Missing '>' in line: ?/ang
E576: viminfo: Missing '>' in line: ??b
E576: viminfo: Missing '>' in line: ?/xvg
E136: viminfo: Too many errors, skipping rest of file
Press ENTER or type command to continue

Итак, я нажимаю Enter. Я получаю те же сообщения:

E576: viminfo: Missing '>' in line: newest to oldest):
E576: viminfo: Missing '>' in line: ?/CJ
E576: viminfo: Missing '>' in line: ?/CG
E576: viminfo: Missing '>' in line: ?/CC
E576: viminfo: Missing '>' in line: ?/OEP
E576: viminfo: Missing '>' in line: ?/CEP
E576: viminfo: Missing '>' in line: ?/dih
E576: viminfo: Missing '>' in line: ?/ang
E576: viminfo: Missing '>' in line: ??b
E576: viminfo: Missing '>' in line: ?/xvg
E136: viminfo: Too many errors, skipping rest of file
Press ENTER or type command to continue

Снова нажимаю Enter, и, наконец, файл открывается для чтения / редактирования. Однако проблема повторяется, когда я пытаюсь закрыть файл с помощью :q!, а также когда я пытаюсь открыть любой другой файл с помощью vi.

Ключевые слова CJ, CG, CC, OEP, CEP, dih, ang, и xvg(я не уверен b, хотя) все строки , которые часто появляются в файлах , которые я прочитал , используя vi, хотя я не уверен , что они все существуют в конкретном файле , который я открытие (Не думаю). Таким образом, возможно, что-то не так с моим viminfoфайлом? Тем не менее, я имею в использовании vi, не vim .

Я не уверен, что случилось; Есть ли у вас какие-либо предложения о том, как я могу диагностировать и, возможно, исправить эту проблему?

Андрей
источник
2
Ваш ~/.viminfoкоррумпирован? Попробуйте переместить его в другое место и посмотреть, вернется ли проблема. Имейте в виду, что многие системы предоставляют vimпросто viсимволическую ссылку vim.
jw013
2
Я использую vi, а не vim. Вы уверены? viчасто имеет псевдоним vim(уточните, which viа затем fileв этом месте).
ire_and_curses
2
В большинстве систем linux vi - это символическая ссылка на vim, поэтому у вас может быть испорченная viminfo.
Марк Коэн
@ire_and_curses Спасибо! Когда я вхожу which vi, я получаю вывод /usr/bin/vi. Когда я вхожу file /usr/bin/vi, я получаю вывод /usr/bin/vi: symbolic link to / etc / alternatives / vi ' . Does this mean I am using vi`?
Андрей
1
@ Андрей - Хорошо, так и сделай file /etc/alternatives/vi. Я ожидаю, что это скажет вам, что вы на самом деле бежите vim.
ire_and_curses

Ответы:

25

Сделай это:

rm -f ~/.viminfo

.viminfoФайл хранит метаданные о различной полезной, но не критичной информации о состоянии. Твой коррумпирован. Убери это.

bahamat
источник
2
Было бы больше риска избежать перемещения .viminfo , чем удалить его. Например, если вы работаете с большой кодовой базой, может быть очень больно восстанавливать ваши оценки.
успешно дел
@bahamat @donothingsuccessfully Спасибо всем за ваше время! Перемещение .viminfo(метод предотвращения риска) устраняет проблему. Итак, я думаю, мой .viminfoфайл был поврежден. Искреннее спасибо за вашу помощь. Счастливых праздников!
Эндрю
1

Ошибка vim E576 возникает, когда в вашем .viminfoфайле есть какая-то синтаксическая ошибка, в которой хранятся ваши команды, история файлов и т. Д.

Повреждение может произойти, если вы находитесь вне пространства или неисправен механизм хранения. Вы можете попробовать отредактировать ~/.viminfo, найти и удалить недопустимые строки, в конце концов переименовать его в другое имя и просто удалить.

Вы также можете использовать -i {viminfo}параметр, чтобы указать другой файл .viminfo.

kenorb
источник