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.
vim
domyślnie zazwyczaj nie widzę^M
, ale czasami jest jeden na końcu pliku.Odpowiedzi:
Spróbuj
:set ffs=unix
uruchomić 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.
źródło
:set list
pokazuje się$
na końcu wszystkich linii (format Unix i DOS), więc nie pomaga rozróżnić tych dwóch.Not an editor command: ffs=unix
- ale ustawiło mnie na właściwej ścieżce. Uruchomienie:set ffs=unix
z plikiem otwartym w vi nie działało - nie wystąpił błąd, ale nic się nie wydarzyło. I umieścićset ffs=unix
w moim pliku .vimrc i to działało.ffs
dokładnie tak, jak jest. Ale zobacz odpowiedź od @wisbucky.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
CR
jako^M
Aby to ustawienie było trwałe, dodaj do
~/.vimrc
:set ffs=unix
Zauważ, że ustawienie .vimrc to
ffs
nieff
.źródło
:e ++ff=unix
Myślę, że tak powinno być .:e ++ff=unix
(na widelec0) 54321
źródło