Jednym z dziwactw Vima jest to, że nie pokazuje pustej linii na końcu pliku, jeśli plik kończy się znakiem nowej linii. W ten sposób, jeśli plik nie kończy się na nowej linii, wyświetlanie jest takie samo, tylko ze [noeol]
znacznikiem w modeline.
Emacs, z drugiej strony, wyświetla ostatni wiersz, jeśli plik kończy się na nowej linii, i nie inaczej.
Podczas gdy zachowanie Emacsa jest zasadniczo bardziej rozsądne, na lepsze lub gorsze, przyzwyczaiłem się do tego pierwszego.
Czy jest jakiś sposób, aby ukryć wyświetlanie ostatniej pustej linii, jednocześnie wymagając, aby plik został zakończony nową linią?
Zrzut ekranu pokazuje trzy okna (jeśli obraz jest zbyt mały, wyświetl obraz w nowej karcie):
Duże okno emacs po lewej stronie
hexl-mode
, pokazujące, że na końcu pliku naprawdę znajduje się nowa linia (0a, w której znajduje się kursor).Okno Emacsa w prawym górnym rogu, z kursorem w pustej trzeciej linii.
Okno Vima w prawym dolnym rogu, z kursorem w ostatnim wierszu tekstu. Kursor nie może poruszać się poniżej tego punktu, nawet jeśli plik kończy się nową linią (
[noeol]
na linii statusu vim nie ma znacznika).
źródło
emacs -Q
, musi to być coś w twoim pliku init.Odpowiedzi:
Pozwól, że dam okropną sugestię, aby wdrożyć:
(Korzystam z lokalnego hooka, ponieważ podejrzewam, że globalne ustawienie może poważnie zepsuć, więc lepiej włącz go dla poszczególnych buforów)
źródło
Prawdopodobnie nie są to dokładnie to, czego chcesz, ale mogą być przydatne.
Używam
linum-mode
trybu pomocniczego we wszystkich moich buforach (ustawionych(global-linum-mode t)
w pliku init). Pokazuje numery linii tylko dla linii, które mają znak nowej linii na końcu.Inną rzeczą, którą możesz polubić, jest włączenie
whitespace-mode
, domyślnie wyświetla szare$
znaki na pustych liniach, pozwalając w ten sposób zobaczyć, które linie są puste. Zobacz stronę Wiki Emacsa tutaj .W podobny sposób, ustawiając
indicate-empty-lines
sięt
pokaże, gdzie jest ostatnia linia (zobacz instrukcję dla wskaźników pobocznych tutaj ).źródło