pero quiero que anule la "escritura" si falla el comando php.
Por lo que yo sé, esto no es posible con VIM. La documentación tampoco establece esta capacidad, así que estoy bastante seguro de que no se puede hacer sin un truco. La pregunta es, sin embargo, ¿qué estás tratando de lograr? Tengo un script que se asegura de que no tengo errores de análisis en PHP antes de comprometerme con el control de versión, en lugar de guardar el archivo. Ese es un simple gancho precompromiso, ¿quizás ese algo funcionará?
Si realmente está interesado en linting antes de guardar el archivo, puede volver a escribir "ZZ" y ": w" en un comando que usted mismo haya escrito, que a su vez lo lame (en el caso de Archivo PHP) y guarda cuando no haya errores. No estoy seguro de si puede reasignar el: w, y podría causar más problemas de los que resuelve.
Quizás una solución más simple sería crear un comando en una pulsación de tecla que usted mismo (por ejemplo, F5), y hacer que haga lo que quiera?
Puede ejecutar, tal vez, algunos shell schript que harán 'php -l% || chmod u-w% ' – Benoit
Ver http://stackoverflow.com/questions/5542969/prevent-file-saving-during-bufwritepre –