Vi w systemie Linux: pokaż zakończenia linii ^ M dla plików w formacie DOS


10

W systemie Solaris, jeśli otworzysz plik w vi, który ma zakończenia linii systemu Windows, będzie on wyświetlany jako ^ M na końcu każdej linii.

W Linuksie vi jest mądrzejszy i rozumie format pliku Windows i nie wyświetla ^ M.

Czy istnieje ustawienie, aby pod tym względem Linux vi zachowywał się tak samo jak Solaris?

Typowym problemem dla nas jest kopiowanie skryptu powłoki z okna dewelopera (Windows) i zapominanie o dos2unix, a następnie dezorientacja, gdy nie działa poprawnie. W systemie Solaris problem jest oczywisty, gdy tylko plik vi zostanie pobrany, ale nie w systemie Linux.

Dzięki.


W systemie Linux, vi jest zwykle Brama Moolenaara w vim , spodziewam vi Solaris jest Bill Joy vi , oryginalne, autentyczne, ale mniej zdolny.
RedGrittyBrick

Na moim vimdomyślnie zazwyczaj nie widzę ^M, ale czasami jest jeden na końcu pliku.
próbuje

Odpowiedzi:


10

Spróbuj :set ffs=unixuruchomić vi (lub ustaw domyślnie w vimrc), który powinien wyświetlać wszystkie znaki CR jako ^M.

vi automatycznie zgaduje, którego formatu użyć na podstawie tego, czy napotyka linie kończące się tylko na LF, czy na obu CR / LF.


2
@RedGrittyBrick - W moim systemie :set listpokazuje się $na końcu wszystkich linii (format Unix i DOS), więc nie pomaga rozróżnić tych dwóch.
sss

@sss: Mój błąd, usunę komentarz.
RedGrittyBrick

2
@gman - to polecenie nie działało dokładnie dla mnie - mam Not an editor command: ffs=unix- ale ustawiło mnie na właściwej ścieżce. Uruchomienie :set ffs=unixz plikiem otwartym w vi nie działało - nie wystąpił błąd, ale nic się nie wydarzyło. I umieścić set ffs=unixw moim pliku .vimrc i to działało.
sss

Doświadczyłem dokładnie tego samego, co @sss
SSH

W ten sposób psuje starannie przygotowaną konfigurację użytkownika. Najprawdopodobniej chcę ffsdokładnie tak, jak jest. Ale zobacz odpowiedź od @wisbucky.
rozwidlenie0

2

Aby wyświetlić zakończenia linii dos dla bieżącego pliku:

:e +ff=unix

Wymusza to format pliku na unix, który będzie renderowany CRjako^M


Aby to ustawienie było trwałe, dodaj do ~/.vimrc:

set ffs=unix

Zauważ, że ustawienie .vimrc to ffsnie ff.


:e ++ff=unixMyślę, że tak powinno być .
fork0

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.