Me encuentro con un problema un poco extraño con vim
Snow Leopard: obtengo un código de salida distinto de cero simplemente ejecutando vim
y luego cerrando.
$ vim
# exit immediately using :q
$ echo $?
1
Sin embargo, si uso la ruta completa a vim
, no veo este comportamiento
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
Al principio pensé que vim
venía de algún lugar anterior en mi camino, pero:
$ which vim
/usr/bin/vim
Entonces estoy perdido. ¿Qué podría estar causando esto?
ACTUALIZACIÓN: Este problema se ha resuelto mágicamente, lo que me hace sospechar mucho. Mi mejor teoría actual es que tuve un problema con mi .vimrc
o un complemento que arreglé accidentalmente mientras modificaba mi configuración de alguna otra manera. Si puedo rastrear exactamente lo que hice para solucionarlo, definitivamente actualizaré con esa información. Gracias por las respuestas
-u NONE
, que le dice a vim que no cargue ningún archivo de configuración. Podría ayudar en algunas situaciones.Respuestas:
¿Tienes
filetype off
en tu vimrc? Intenta reemplazarlo con:Tuve este problema usando el Patógeno de Tim Pope en OS X. Este artículo me ayudó a resolver el problema. Si está utilizando patógenos ...
... haz esto en su lugar:
http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git
fuente
.vimrc
.filetype on
encima de lo existentefiletype off
.Se me ocurren dos posibles explicaciones.
vim
En realidad es un alias. Tenga en cuenta quewhich
no muestra alias, debe usartype
en su lugar (a menos que esté ejecutando csh o tcsh).Vim va a buscar algún archivo en una ruta relativa a su directorio de instalación, que determina al mirar
argv[0]
(el nombre del ejecutable como se pasa desde el shell), y de alguna manera no puede encontrar esa ruta si se llama a través de una ruta relativa. Eso sería técnicamente posible, pero no creo que Vim realmente lo haga.fuente
Eso no sucede aquí, con un sistema similar: Snow Leopard y la versión estándar de Vim.
Prueba este comando:
Eso le dará una lista de todas las llamadas de sistema que hace Vim mientras se inicializa y luego se apaga inmediatamente. (
dtruss
es equivalente astrace
en Linux, si lo ha usado antes).Lo que está buscando es una línea cerca del final que muestre un código de error, generalmente -1. Mirar los argumentos de la llamada al sistema debería llevarlo al problema. Una posibilidad de alta probabilidad es la falta de un archivo, que probablemente aparecerá en una
open()
llamada.Si Vim sale limpiamente cuando se ejecuta de esta manera, probablemente tenga un problema de permiso, que es
sudo
necesario para permitirdtruss
que se ejecute. En ese caso, probablemente pueda solucionarlo reparando los permisos .fuente
dtruss
resultado a su pregunta. (O al menos, las últimas 25 líneas más o menos.) Lo que es incomprensible para usted puede llevar a otro a la respuesta correcta.sudo
"solucionó" y le hizo saber que necesitaba ejecutar los permisos de reparación? ¿O fue más bien lo que ledtruss
mostró un error de syscall, y si es así, cuál y por qué estaba fallando?.vim
directorio zipp'd de alguien más.vimrc
, y las cosas tenían rutas completas y archivos faltantes de complementos no utilizados.Había golpeado este problema de códigos de retorno. Lo
loadview
rastreé hasta un comando de ejecución silenciosa en mi vimrc que proporciona vistas persistentes:Al ingresar un búfer sin un nombre de archivo,
silent! loadview
se ejecutará, ocultando el errorlo que también provocó que el código de retorno se estableciera en uno.
fuente