Je rencontre un peu un problème étrange avec vim
Snow Leopard: je reçois un code de sortie non nul en exécutant simplement vim
puis en quittant.
$ vim
# exit immediately using :q
$ echo $?
1
Cependant, si j'utilise le chemin d'accès complet à vim
, je ne vois pas ce comportement
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
Au début, je pensais vim
venir de quelque part plus tôt sur mon chemin, mais:
$ which vim
/usr/bin/vim
Je suis donc perdu. Qu'est-ce qui peut causer cela?
MISE À JOUR: Ce problème s'est résolu comme par magie, ce qui me rend très suspect. Ma meilleure théorie actuelle est que j'ai eu un problème avec mon .vimrc
ou un plugin que j'ai corrigé accidentellement tout en modifiant ma configuration d'une autre manière. Si je peux retrouver exactement ce que j'ai fait pour le réparer, je mettrai certainement à jour ces informations. Merci pour les réponses.
-u NONE
, ce qui indique à vim de ne charger aucun fichier de configuration. Peut aider dans certaines situations.Réponses:
Avez-vous
filetype off
dans votre vimrc? Essayez de le remplacer par:J'ai eu ce problème en utilisant Pathogen de Tim Pope sur OS X. Cet article m'a aidé à résoudre le problème. Si vous utilisez Pathogen ...
... faites ceci à la place:
http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git
la source
.vimrc
.filetype on
au-dessus de l'existantfiletype off
.Je peux penser à deux explications possibles.
vim
est en fait un alias. Notez quewhich
ne montre pas d'alias, vous devez utiliser à latype
place (sauf si vous exécutez csh ou tcsh).Vim va chercher un fichier dans un chemin relatif à son répertoire d'installation, qu'il détermine à partir de la recherche
argv[0]
(le nom de l'exécutable tel que transmis par le shell), et ne parvient pas à trouver ce chemin s'il est appelé via un chemin relatif. Ce serait techniquement possible, mais je ne pense pas que Vim le fasse réellement.la source
Cela ne se produit pas ici, avec un système similaire: Snow Leopard et la version stock de Vim.
Essayez cette commande:
Cela vous donnera une liste de tous les appels système que Vim effectue pendant son initialisation, puis s'arrête immédiatement. (
dtruss
est équivalent àstrace
Linux, si vous l'avez déjà utilisé.)Ce que vous recherchez est une ligne proche de la fin qui affiche un code d'erreur, généralement -1. L'examen des arguments de l'appel système devrait vous conduire au problème. Une possibilité très probable est un fichier manquant, qui apparaîtra probablement lors d'un
open()
appel.Si Vim se ferme correctement lorsqu'il est exécuté de cette façon, vous avez probablement un problème d'autorisation, que le
sudo
nécessaire pour autoriser l'dtruss
exécution se déplace. Dans ce cas, vous pouvez probablement le corriger en réparant les autorisations .la source
dtruss
sortie à votre question. (Ou du moins, les 25 dernières lignes environ.) Ce qui vous est incompréhensible peut conduire un autre à la bonne réponse.sudo
"résolu", vous indiquant que vous deviez exécuter les autorisations de réparation? Ou est-ce plutôt que celadtruss
vous a montré une erreur de syscall, et si oui, laquelle et pourquoi a-t-elle échoué?.vim
répertoire zippé de quelqu'un d'autre et.vimrc
, et les choses avaient des chemins complets et des fichiers manquants à partir de plugins inutilisés.J'avais rencontré ce problème de codes retour. Je l'ai retracée à une
loadview
commande exécutée silencieusement dans mon vimrc qui fournit des vues persistantes:Lors de la saisie d'un tampon sans nom de fichier, le
silent! loadview
s'exécuterait, masquant l'erreurce qui avait également provoqué la mise à un du code retour.
la source