Mam trochę dziwnego problemu z systemem vim
Snow Leopard: otrzymuję niezerowy kod wyjścia z samego uruchomienia, vim
a następnie zamknięcia.
$ vim
# exit immediately using :q
$ echo $?
1
Jeśli jednak użyję pełnej ścieżki do vim
, nie widzę tego zachowania
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
Na początku myślałem, że vim
przychodzi skądś na mojej drodze, ale:
$ which vim
/usr/bin/vim
Więc jestem zagubiony. Co może być tego przyczyną?
AKTUALIZACJA: Ten problem sam się magicznie rozwiązał, przez co jestem bardzo podejrzliwy. Moja najlepsza teoria jest taka, że miałem problem z moją .vimrc
wtyczką, którą naprawiłem przypadkowo podczas dostrajania konfiguracji w inny sposób. Jeśli uda mi się wyśledzić dokładnie, co zrobiłem, aby to naprawić, na pewno zaktualizuję te informacje. Dziękuję za odpowiedzi.
-u NONE
, co mówi vimowi, aby w ogóle nie ładował pliku konfiguracyjnego. Może pomóc w niektórych sytuacjach.Odpowiedzi:
Czy masz
filetype off
w swoim vimrc? Spróbuj zastąpić go:Miałem ten problem przy użyciu Patogena Tima Pope'a w systemie OS X. Ten artykuł pomógł mi rozwiązać problem. Jeśli używasz Pathogen ...
... zrób to zamiast tego:
http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git
źródło
.vimrc
.filetype on
ponad istniejącefiletype off
.Mogę wymyślić dwa możliwe wyjaśnienia.
vim
jest właściwie pseudonimem. Zauważ, żewhich
nie pokazuje aliasów, powinieneś użyćtype
zamiast tego (chyba że używasz csh lub tcsh).Vim szuka jakiegoś pliku w ścieżce względem katalogu instalacyjnego, który określa na podstawie patrzenia
argv[0]
(nazwa pliku wykonywalnego przekazanego z powłoki) i jakoś nie znajduje tej ścieżki, jeśli jest wywoływany przez ścieżkę względną. To byłoby technicznie możliwe, ale nie sądzę, żeby Vim tak zrobił.źródło
Tak się nie dzieje w przypadku podobnego systemu: Snow Leopard i podstawowej wersji Vima.
Wypróbuj to polecenie:
Otrzymasz listę wszystkich wywołań systemowych Vima podczas inicjalizacji, a następnie natychmiastowego wyłączania. (
dtruss
jest równoważne zstrace
Linuksem, jeśli używałeś go wcześniej).To, czego szukasz, to linia blisko końca, która pokazuje kod błędu, zwykle -1. Analiza argumentów wywołania systemowego powinna doprowadzić do problemu. Jedną z możliwości wysokiego prawdopodobieństwa jest brakujący plik, który prawdopodobnie pojawi się podczas
open()
połączenia.Jeśli Vim zakończy się bezproblemowo, gdy zostanie uruchomiony w ten sposób, prawdopodobnie masz problem z uprawnieniami, którym jest
sudo
potrzebadtruss
obejścia. W takim przypadku prawdopodobnie możesz to naprawić, naprawiając uprawnienia .źródło
dtruss
wynik do pytania. (A przynajmniej ostatnie 25 wierszy.) To, co jest dla ciebie niezrozumiałe, może doprowadzić inną do właściwej odpowiedzi.sudo
„ pozwoleniem ”, który „naprawił”, informując, że musisz uruchomić uprawnienia do naprawy? A może raczejdtruss
pokazywał błąd systemowy, a jeśli tak, to który i dlaczego się nie udaje?.vim
katalog.vimrc
i rzeczy miały pełne ścieżki i brakujące pliki z nieużywanych wtyczek.Wystąpił problem z kodami powrotu. Prześledziłem go z powrotem do
loadview
komendy vimrc, która cicho wykonuje polecenie, która zapewnia trwałe widoki:Po wprowadzeniu bufora bez nazwy pliku
silent! loadview
wykona się, ukrywając błądco również spowodowało, że kod powrotu został ustawiony na jeden.
źródło