Je travaille donc dans une boutique PHP, et nous utilisons tous des éditeurs différents, et nous devons tous travailler sur Windows. J'utilise vim, et tout le monde dans la boutique se plaint que chaque fois que je modifie un fichier, il y a une nouvelle ligne en bas. J'ai cherché et trouvé que c'était un comportement documenté de vi & vim ... mais je me demandais s'il y avait un moyen de désactiver cette fonctionnalité. (Il serait préférable que je puisse le désactiver pour des extensions de fichier spécifiques).
Si quelqu'un le sait, ce serait génial!
?>
balise de fermeture, juste pour cette raison.Réponses:
Et pour
vim
7.4+, vous pouvez utiliser (de préférence sur votre .vimrc) (merci à 罗泽轩 pour ces dernières nouvelles!):Maintenant, concernant les anciennes versions de
vim
.Même si le fichier a déjà été enregistré avec de nouvelles lignes à la fin:
vim -b file
et une fois dans vim:terminé.
vous pouvez également ouvrir des fichiers dans vim avec
:e ++bin file
Encore une autre alternative:
la source
set binary
etset noeol
dans votre .vimrcbinary
substitutionsexpandtab
, qui vous amèneront à obtenir des onglets littéraux dans votre source.set nofixendofline
à résoudre le problème dans vim 7.4+Ajoutez la commande suivante à votre .vimrc pour désactiver l'option de fin de ligne:
Cependant , PHP lui-même ignorera cette dernière fin de ligne - cela ne devrait pas être un problème. Je suis presque certain que dans votre cas, il y a quelque chose d'autre qui ajoute le dernier caractère de nouvelle ligne, ou peut-être qu'il y a un mélange avec les types de fin de ligne windows / unix (
\n
ou\r\n
, etc.).Mettre à jour:
Une autre solution pourrait être d'ajouter simplement cette ligne à votre .vimrc:
la source
Il existe une autre façon d'aborder cela si vous utilisez Git pour le contrôle de code source. Inspiré par une réponse ici , j'ai écrit mon propre filtre à utiliser dans un fichier gitattributes .
Pour installer ce filtre, enregistrez-le
noeol_filter
quelque part dans votre$PATH
, rendez-le exécutable et exécutez les commandes suivantes:Pour commencer à utiliser le filtre uniquement pour vous, mettez la ligne suivante dans votre
$GIT_DIR/info/attributes
:Cela garantira que vous n'engagerez aucune nouvelle ligne à eof dans un
.php
fichier, quoi que Vim fasse.Et maintenant, le script lui-même:
la source
Je n'ai pas essayé cette option, mais les informations suivantes sont fournies dans le système d'aide de vim (ie help eol):
Vous pouvez également être intéressé par la réponse à une question précédente: " Pourquoi les fichiers devraient-ils se terminer par une nouvelle ligne ".
la source
J'ai ajouté une astuce sur le wiki Vim pour un problème similaire (bien que différent):
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
la source
fixeol
option qui peut être désactivée pour conserver automatiquement tout EOL manquant à la fin du fichier. Ce script devient inutile pour Vim 7.4.785 et versions ultérieures. » (Source: la même page wiki.) Merci, je n'étais pas au courant de cette nouvelle option.noeol
etnofixeol
obtenir le résultat souhaité.OK, être sous Windows complique les choses;)
Comme l'option «binaire» réinitialise l'option «fileformat» (et l'écriture avec l'ensemble «binaire» écrit toujours avec des fins de ligne unix), sortons le gros marteau et faisons-le en externe!
Que diriez-vous de définir une autocommande (: help autocommand) pour l'événement BufWritePost? Cette autocommande est exécutée après chaque fois que vous écrivez un tampon entier. Dans cette autocommande, appelez un petit outil externe (php, perl ou autre script) qui supprime la dernière nouvelle ligne du fichier qui vient d'être écrit.
Donc, cela ressemblerait à quelque chose comme ceci et irait dans votre fichier .vimrc:
Assurez-vous de lire l'intégralité de la documentation vim sur les autocommandes si c'est la première fois que vous traitez avec des autocommandes. Il y a quelques mises en garde, par exemple, il est recommandé de supprimer tous les autocmds de votre .vimrc au cas où votre .vimrc pourrait provenir de plusieurs fois.
la source
silent
. Par exemplesilent !your-script <afile>
.J'ai implémenté les suggestions de Blixtor avec le post-traitement Perl et Python, soit en cours d'exécution dans Vim (s'il est compilé avec un tel support de langage), soit via un script Perl externe. Il est disponible en tant que plugin PreserveNoEOL sur vim.org.
la source
let g:PreserveNoEOL = 1
dans mon.vimrc
fichier! J'ai dû apprendre vimscript pour comprendre cela à partir de la description du plugin! : D:help PreserveNoEOL-usage
aurait dit aussi. RTFM :-)INSTALLATION
etCONFIGURATION
. Je n'ai même pas remarqué laUSAGE
section dans la description, car elle est au-dessus de l'installation :)Vous pourriez peut-être voir pourquoi ils se plaignent. Si un fichier php a une nouvelle ligne après la fin?>, Php le sortira dans le cadre de la page. Ce n'est pas un problème sauf si vous essayez d'envoyer des en-têtes une fois le fichier inclus.
Cependant, le?> À la fin d'un fichier php est facultatif. Pas de fin?>, Pas de problème avec une nouvelle ligne à la fin du fichier.
la source
J'ajoute .vimrc
et ça aide, essayez-le
la source
Je pense que j'ai trouvé une meilleure solution que la réponse acceptée. Les solutions alternatives ne fonctionnaient pas pour moi et je ne voulais pas avoir à travailler en mode binaire tout le temps. Heureusement, cela semble faire le travail et je n'ai pas encore rencontré d'effets secondaires désagréables: conserver la fin de ligne manquante à la fin des fichiers texte . Je viens d'ajouter le tout à mon ~ / .vimrc.
la source
Serait-il possible pour vous d'utiliser une commande spéciale pour enregistrer ces fichiers?
Si vous faites: set binary,: w et: set nobinary, le fichier sera écrit sans retour à la ligne s'il n'y en avait pas pour commencer.
Cette séquence de commandes peut être insérée dans une commande définie par l'utilisateur ou un mappage, bien sûr.
la source
À partir de la version
vim
7.4, vous pouvez utiliserIl y a des informations sur ce changement ici: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
la source
J'ai trouvé que ce plugin vimscript est utile pour cette situation.
Ou lisez plus sur github
la source