Vi в Linux: показать конец строки ^ M для файлов формата DOS

10

В Solaris, если вы откроете файл в vi с окончанием строки Windows, он будет отображаться как ^ M в конце каждой строки.

В Linux vi умнее, понимает формат файлов Windows и не отображает ^ M.

Есть ли настройка, чтобы заставить Linux vi вести себя так же, как Solaris в этом отношении?

Для нас общей проблемой является копирование сценария оболочки из окна разработки (Windows) и забывание его при помощи dos2unix, а затем путаница, когда он не работает должным образом. В Solaris проблема очевидна, как только вы запустите файл, но не в Linux.

Спасибо.

SSS
источник
В Linux vi - это обычно vim Брэма Муленаара , я ожидаю, что vi в Solaris - это vi от Bill Joy , оригинальный, аутентичный, но менее способный.
RedGrittyBrick
На моем vim, по умолчанию, я обычно не вижу ^M, но иногда есть один в конце файла.
trysis

Ответы:

10

Попробуйте :set ffs=unixпри запуске vi (или установить по умолчанию в vimrc), который должен отображать все символы CR как ^M.

vi автоматически угадывает, какой формат использовать, основываясь на том, встречаются ли в нем строки, заканчивающиеся просто LF, или оба CR / LF.

Garrett
источник
2
@RedGrittyBrick - В моей системе :set listпоказывается $в конце всех строк (формат Unix и DOS), поэтому не помогает различать эти две строки.
ССС
@sss: Моя ошибка, я удалю комментарий.
RedGrittyBrick
2
@gman - эта команда не сработала для меня точно - я понял Not an editor command: ffs=unix- но поставил меня на правильный путь. Запуск :set ffs=unixс открытым файлом в vi не работал - без ошибок, но ничего не произошло. Я положил set ffs=unixв мой файл .vimrc, и это сработало.
ССС
Я испытал в точности то же самое, что и @sss
SSH This
Таким образом портит тщательно подготовленную конфигурацию пользователя. Я, скорее всего, хочу ffsименно так, как есть. Но посмотрите ответ от @wisbucky.
fork0
2

Чтобы показать окончание строки DOS для текущего файла:

:e +ff=unix

Это заставляет файловый формат Unix, который будет отображаться CRкак^M


Чтобы сделать этот параметр постоянным, добавьте ~/.vimrc:

set ffs=unix

Обратите внимание, что настройка .vimrc - ffsнет ff.

wisbucky
источник
Это должно быть :e ++ff=unix, я считаю.
fork0
0

:e ++ff=unix

(за вилку0) 54321

Ян Кью Пеблик
источник