Dlaczego vi jest najwyraźniej uszkodzony (błąd viminfo E576) i jak mogę go naprawić?

18

Biegle posługuję się systemami Unix / Linux, ale nie jestem ekspertem. Jeśli chcę otworzyć plik (na przykład file.txt), używam vi:

vi file.txt

Otworzy to plik, a jeśli chcę go zamknąć, używam :q!. Używam tej metody od dwóch lat, kiedy używam Unix / Linux. Moja instytucja ma klaster z systemem Ubuntu Linux.

Jednak dzisiaj próbowałem otworzyć plik i otrzymałem te komunikaty o błędach:

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

Więc naciskam Enter. Otrzymuję te same wiadomości:

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

Ponownie naciskam Enteri wreszcie plik otwiera się do odczytu / edycji. Jednak problem powtarza się, gdy próbuję zamknąć plik za pomocą :q!, a także, gdy próbuję otworzyć inny plik za pomocą vi.

Słowa kluczowe CJ, CG, CC, OEP, CEP, dih, ang, i xvg(nie jestem pewien b, choć) są wszystkie ciągi, które często pojawiają się w plikach, które czytam użyciu vi, choć nie jestem pewien, że wszystko istnieje w danym pliku, że jestem otwarcia (Nie sądzę). Zatem może coś jest nie tak z moim viminfoplikiem? Ja jednak jestem za pomocą vi, nie vim .

Nie jestem pewien, co się stało; masz jakieś sugestie, jak mogę zdiagnozować i rozwiązać ten problem?

Andrzej
źródło
2
Czy jesteś ~/.viminfozepsuty? Spróbuj przenieść go w inne miejsce i sprawdź, czy problem powróci. Należy pamiętać o wielu systemach, które zapewniają vimpo prostu vijako symboliczne łącze do vim.
jw013,
2
Używam vi, a nie vim. Jesteś pewny? vijest często aliasowany do vim(sprawdź za pomocą, which via następnie filew tej lokalizacji).
ire_and_curses
2
W większości systemów linuksowych vi jest dowiązaniem symbolicznym do vima, więc możesz mieć uszkodzone viminfo.
Mark Cohen
@ire_and_curses Dzięki! Kiedy wchodzę which vi, otrzymuję wynik /usr/bin/vi. Kiedy wchodzę file /usr/bin/vi, otrzymuję wyjście /usr/bin/vi: symbolic link to / etc / alternatives / vi ' . Does this mean I am using vi`?
Andrew
1
@Andrew - Ok, podobnie jak file /etc/alternatives/vi. Oczekuję, że to powie ci, że tak naprawdę biegniesz vim.
ire_and_curses

Odpowiedzi:

25

Zrób to:

rm -f ~/.viminfo

.viminfoPlik przechowuje metadane na temat różnych użyteczne, ale bez informacji o stanie krytycznym. Twoje jest skorumpowane. Usunąć to.

bahamat
źródło
2
Bardziej niechętnie byłoby podejmować ruch .viminfo , niż go usuwać. Na przykład, jeśli pracujesz na dużej bazie kodu, odtworzenie swoich znaków może być bardzo bolesne.
donothings udane
@bahamat @donothingsuccessfully Dziękujemy wszystkim za poświęcony czas! Przeprowadzka .viminfo(metoda awersji do ryzyka) rozwiązuje problem. Myślę, że mój .viminfoplik został uszkodzony. Szczerze dziękuję za pomoc. Wesołych Świąt!
Andrew,
1

Błąd vim E576 występuje, gdy w .viminfopliku występuje błąd składniowy , który przechowuje historię poleceń i plików itp.

Zepsucie może nastąpić, gdy zabraknie miejsca lub silnik pamięci będzie uszkodzony. Możesz spróbować edytować ~/.viminfo, zlokalizować i usunąć nieprawidłowe linie, ostatecznie zmienić nazwę na inną i po prostu ją usunąć.

Możesz także użyć -i {viminfo}parametru, aby określić inny plik .viminfo.

kenorb
źródło