Also arbeite ich in einem PHP-Shop, und wir verwenden alle unterschiedliche Editoren, und wir müssen alle an Windows arbeiten. Ich benutze vim und jeder im Shop beschwert sich immer wieder, dass bei jeder Bearbeitung einer Datei unten eine neue Zeile steht. Ich habe mich umgesehen und festgestellt, dass dies ein dokumentiertes Verhalten von vi & vim ist ... aber ich habe mich gefragt, ob es eine Möglichkeit gibt, diese Funktion zu deaktivieren. (Es wäre am besten, wenn ich es für bestimmte Dateierweiterungen deaktivieren könnte).
Wenn jemand davon weiß, wäre das großartig!
?>
schließende Tag nur aus diesem Grund wegzulassen .Antworten:
Und für
vim
7.4+ können Sie (vorzugsweise auf Ihrer .vimrc) verwenden (danke an 罗泽轩 für die letzten Neuigkeiten!):Nun zu älteren Versionen von
vim
.Auch wenn die Datei am Ende bereits mit neuen Zeilen gespeichert wurde:
vim -b file
und einmal in vim:getan.
Alternativ können Sie Dateien in vim mit öffnen
:e ++bin file
Noch eine Alternative:
quelle
set binary
undset noeol
in Ihre .vimrcbinary
Überschreibungenexpandtab
, die dazu führen, dass Sie wörtliche Registerkarten in Ihrer Quelle erhalten.set nofixendofline
, um das Problem in Vim 7.4+ zu lösenFügen Sie Ihrer .vimrc den folgenden Befehl hinzu, um die Option für das Zeilenende zu deaktivieren:
Allerdings , PHP selbst wird die letzte End-of-line ignorieren - es sollte kein Problem sein. Ich bin mir fast sicher, dass es in Ihrem Fall noch etwas gibt, das das letzte Zeilenumbruchzeichen hinzufügt, oder möglicherweise eine Verwechslung mit Windows / Unix-Zeilenendetypen (
\n
oder\r\n
usw.).Aktualisieren:
Eine alternative Lösung könnte darin bestehen, diese Zeile einfach zu Ihrer .vimrc hinzuzufügen:
quelle
Es gibt eine andere Möglichkeit, dies zu erreichen, wenn Sie Git für die Quellcodeverwaltung verwenden. Inspiriert von einer Antwort hier habe ich meinen eigenen Filter zur Verwendung in einer Gitattributes- Datei geschrieben.
Um diesen Filter zu installieren, speichern Sie ihn
noeol_filter
irgendwo in Ihrem$PATH
, machen Sie ihn ausführbar und führen Sie die folgenden Befehle aus:Um den Filter nur für sich selbst zu verwenden, setzen Sie die folgende Zeile in Ihre
$GIT_DIR/info/attributes
:Dadurch wird sichergestellt, dass Sie bei eof keine Zeilenumbrüche in einer
.php
Datei festschreiben , unabhängig davon, was Vim tut.Und jetzt das Drehbuch selbst:
quelle
Ich habe diese Option nicht ausprobiert, aber die folgenden Informationen werden im vim-Hilfesystem (dh help eol) angegeben:
Möglicherweise interessiert Sie auch die Antwort auf eine frühere Frage: " Warum sollten Dateien mit einem Zeilenumbruch enden? ".
quelle
Ich habe im Vim-Wiki einen Tipp für ein ähnliches (wenn auch anderes) Problem hinzugefügt:
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
quelle
fixeol
Option hinzu, die deaktiviert werden kann, um fehlende EOL am Ende der Datei automatisch beizubehalten . Dieses Skript ist für Vim 7.4.785 und höher nicht mehr erforderlich. “ (Quelle: dieselbe Wiki-Seite.) Danke, mir war diese neue Option nicht bekannt.noeol
undnofixeol
das gewünschte Ergebnis erzielen.OK, Sie unter Windows erschweren die Sache;)
Da die Option 'binär' die Option 'Dateiformat' zurücksetzt (und das Schreiben mit 'binär' immer mit Unix-Zeilenenden schreibt), nehmen wir den großen Hammer heraus und tun es extern!
Wie wäre es mit der Definition eines Autocommands (: help autocommand) für das BufWritePost-Ereignis? Dieser automatische Befehl wird jedes Mal ausgeführt, wenn Sie einen ganzen Puffer schreiben. Rufen Sie in diesem Autocommand ein kleines externes Tool (PHP, Perl oder ein beliebiges Skript) auf, das die letzte neue Zeile der gerade geschriebenen Datei entfernt.
Das würde also ungefähr so aussehen und in Ihre .vimrc-Datei gehen:
Lesen Sie unbedingt die gesamte vim-Dokumentation zu Autobefehlen, wenn Sie sich zum ersten Mal mit Autobefehlen befassen. Es gibt einige Einschränkungen, z. B. wird empfohlen, alle Autocmds in Ihrer .vimrc zu entfernen, falls Ihre .vimrc möglicherweise mehrmals bezogen wird.
quelle
silent
. ZBsilent !your-script <afile>
.Ich habe Blixtors Vorschläge mit Perl- und Python-Nachbearbeitung implementiert, entweder in Vim (sofern es mit einer solchen Sprachunterstützung kompiliert wurde) oder über ein externes Perl-Skript. Es ist als PreserveNoEOL-Plugin auf vim.org verfügbar.
quelle
let g:PreserveNoEOL = 1
in meine.vimrc
Datei setzen! Musste Vimscript lernen, um das aus der Plugin-Beschreibung herauszufinden! : D:help PreserveNoEOL-usage
hätte es dir auch gesagt. RTFM :-)INSTALLATION
undCONFIGURATION
.USAGE
Vielleicht könnten Sie sich ansehen, warum sie sich beschweren. Wenn eine PHP-Datei nach dem Ende einen Zeilenumbruch hat?>, Gibt PHP diesen als Teil der Seite aus. Dies ist kein Problem, es sei denn, Sie versuchen, Header zu senden, nachdem die Datei enthalten ist.
Das?> Am Ende einer PHP-Datei ist jedoch optional. Kein Ende?>, Kein Problem mit einem Zeilenumbruch am Ende der Datei.
quelle
Ich füge in .vimrc hinzu
und es hilft, versuchen Sie es
quelle
Ich denke, ich habe eine bessere Lösung gefunden als die akzeptierte Antwort. Die alternativen Lösungen funktionierten nicht für mich und ich wollte nicht die ganze Zeit im Binärmodus arbeiten müssen. Glücklicherweise scheint dies die Arbeit zu erledigen, und ich habe noch keine bösen Nebenwirkungen festgestellt: Bewahren Sie das fehlende Zeilenende am Ende der Textdateien auf . Ich habe das Ganze einfach zu meinem ~ / .vimrc hinzugefügt.
quelle
Wäre es Ihnen möglich, einen speziellen Befehl zum Speichern dieser Dateien zu verwenden?
Wenn Sie Folgendes tun: set binary ,: w und: set nobinary, wird die Datei ohne Zeilenumbruch geschrieben, wenn zu Beginn keine vorhanden war.
Diese Folge von Befehlen könnte natürlich in einen benutzerdefinierten Befehl oder eine Zuordnung eingefügt werden.
quelle
Ab
vim
v7.4 können Sie verwendenHier finden Sie einige Informationen zu dieser Änderung: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
quelle
Ich fand dieses Vimscript-Plugin für diese Situation hilfreich.
Oder lesen Sie mehr bei Github
quelle