Vi в Linux: покажіть закінчення ^ M рядків для файлів у форматі DOS


10

У Solaris, якщо ви відкриєте файл in vi, який має закінчення рядка Windows, це відображається як ^ M в кінці кожного рядка.

У Linux vi є розумнішим і розуміє формат файлу Windows, а не відображає ^ M.

Чи є налаштування змусити Linux vi поводитись так само, як Solaris в цьому відношенні?

Поширеною проблемою для нас є копіювання скрипта оболонки з вікна розробника (Windows) та забуття його до2unix, а потім плутання, коли воно не працює належним чином. Проблема щодо Solaris очевидна, як тільки ви відкриєте файл, але не в Linux.

Дякую.


У Linux VI зазвичай Брем Мооленаар в в'ється , я очікую , що на VI Solaris є Білл Джой VI , оригінальною, справжньої , але в меншій мірі здатний.
RedGrittyBrick

На моєму vim, за замовчуванням, я зазвичай не бачу ^M, але іноді він є в кінці файлу.
трис

Відповіді:


10

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

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


2
@RedGrittyBrick - У моїй системі :set listвідображається $в кінці всіх рядків (формат Unix та DOS), тому не допомагає розрізняти два.
sss

@sss: Моя помилка, я видалю коментар.
RedGrittyBrick

2
@gman - ця команда не працювала для мене точно - я отримав Not an editor command: ffs=unix- але поставив мене на правильний шлях. Запуск :set ffs=unixіз відкритим файлом in vi не працював - жодної помилки, але нічого не сталося. Я помістив set ffs=unixу свій файл .vimrc і це спрацювало.
sss

Я пережив абсолютно те саме, що і @sss
SSH Цього

Таким чином, псується ретельно підготовлена ​​конфігурація користувача. Я, швидше за все, хочу ffsсаме так. Але дивіться відповідь від @wisbucky.
форк0

2

Щоб показати закінчення dos-рядків для поточного файлу:

:e +ff=unix

Це змушує файловий формат до unix, який буде відображатися CRяк^M


Щоб зробити це налаштування постійним, додайте до ~/.vimrc:

set ffs=unix

Зверніть увагу, що .vimrc налаштування є ffs, ні ff.


Це має бути :e ++ff=unix, я вважаю.
fork0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.