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.

sss
źródło
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.

Garrett
źródło
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.

wisbucky
źródło
:e ++ff=unixMyślę, że tak powinno być .
fork0
0

:e ++ff=unix

(na widelec0) 54321

Jan Kyu Peblik
źródło