У меня возникла странная проблема с vim
Snow Leopard: я получаю ненулевой код выхода, просто запустив его vim
и выйдя из него.
$ vim
# exit immediately using :q
$ echo $?
1
Однако, если я использую полный путь к vim
, я не вижу этого поведения
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
Сначала я подумал, что vim
это происходит откуда-то раньше на моем пути, но:
$ which vim
/usr/bin/vim
Так что я в растерянности. Что может быть причиной этого?
ОБНОВЛЕНИЕ: Эта проблема волшебным образом решена сама, что делает меня очень подозрительным. Моя лучшая теория заключается в том, что у меня была проблема с моим .vimrc
или плагином, который я исправил случайно, когда настраивал свою установку каким-либо другим способом. Если я смогу точно отследить, что я сделал, чтобы исправить это, я обязательно обновлю эту информацию. Спасибо за ответы.
-u NONE
, что говорит vim вообще не загружать конфигурационный файл. Может помочь в некоторых ситуациях.Ответы:
У вас есть
filetype off
в вашем vimrc? Попробуйте заменить его на:У меня была эта проблема с использованием Pathogen Тима Попа на OS X. Эта статья помогла мне решить эту проблему. Если вы используете патоген ...
... сделать это вместо этого:
http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git
источник
.vimrc
.filetype on
выше существующегоfiletype off
.Я могу придумать два возможных объяснения.
vim
на самом деле псевдоним. Обратите внимание, чтоwhich
псевдонимы не отображаются, вы должны использоватьtype
вместо этого (если вы не используете csh или tcsh).Vim ищет какой-либо файл в пути относительно своего установочного каталога, который он определяет по просмотру
argv[0]
(имя исполняемого файла, переданное из оболочки), и каким-то образом не может найти этот путь, если он вызывается через относительный путь. Это было бы технически возможно, но я не думаю, что Вим на самом деле это делает.источник
Этого не происходит здесь с похожей системой: Snow Leopard и стоковой версией Vim.
Попробуйте эту команду:
Это даст вам список всех системных вызовов, которые Vim делает во время инициализации, а затем немедленно выключается. (
dtruss
эквивалентноstrace
Linux, если вы использовали это раньше.)То, что вы ищете, это строка ближе к концу, которая показывает код ошибки, обычно -1. Просмотр аргументов системного вызова должен привести вас к проблеме. Одна высокая вероятность - это отсутствующий файл, который, вероятно, будет отображаться при
open()
вызове.Если при запуске таким способом Vim завершает работу корректно, возможно, у вас есть проблема с правами доступа, которую
sudo
необходимо разрешитьdtruss
для запуска. В этом случае вы, вероятно, сможете это исправить, восстановив разрешения .источник
dtruss
вывод к вашему вопросу. (Или, по крайней мере, последние 25 строк или около того.) То, что вам непонятно, может привести другого к правильному ответу.sudo
«исправлена», давая вам знать, что вам нужно запустить разрешения на восстановление? Или, скорее, этоdtruss
показало вам ошибку системного вызова, и если да, то какая и почему она не сработала?.vim
каталог zipp'd.vimrc
, и у него были полные пути и отсутствующие файлы из неиспользуемых плагинов.Я столкнулся с этой проблемой кодов возврата. Я проследил это до тихо выполняющейся
loadview
команды в моем vimrc, которая обеспечивает постоянные представления:При вводе буфера без имени файла
silent! loadview
будет выполняться, скрывая ошибкучто также привело к тому, что код возврата был установлен в единицу.
источник