Как преобразовать разрыв строки ^ M в «нормальный» перевод строки в файле, открытом в vim?

Попробуйте это:


как нарисованные. Источник - Android - отрисовка с закругленными углами только сверху

468
задан 15.05.2020, 05:06

5 ответов

Ничто из вышеперечисленного не помогло мне. (замена на \ r, ^ M, ctrl-v-ctrl-m) Я использовал копирование и вставку, чтобы вставить свой текст в новый файл.

Если у вас есть макросы, которые мешают, вы можете попробовать :set paste до операции вставки и :set nopaste после.

0
ответ дан 15.05.2020, 05:09

В качестве альтернативы, существуют утилиты с открытым исходным кодом, называемые dos2unix и unix2dos, которые делают именно эту вещь. В системе Linux они, вероятно, установлены по умолчанию; для системы Windows вы можете загрузить их с http://www.bastet.com/ и др.

5
ответ дан 15.05.2020, 05:12
  • 1
    Документы показывают объекты, явно сериализируемые, потому что та страница о том, как сериализировать объекты. Аннотация о session_register () только свободно связывается с сериализацией. It' s говорящий в основном Вас don' t должен сериализировать объекты явно для использования их на сессиях. – JPot 18.09.2009, 06:26

В моем случае

Ничто из вышеперечисленного не сработало, у меня был файл CSV, скопированный на компьютер Linux с моего компьютера Mac, и я использовал все вышеперечисленные команды, но ничего не помогло, кроме приведенной ниже

tr "\015" "\n" < inputfile > outputfile

У меня был файл, в котором символы ^ M были переключены между строками примерно так, как показано ниже

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
7
ответ дан 15.05.2020, 05:19

«Эта функция сохраняет список переходов

fun! Dos2unixFunction()
let _s=@/
let l = line(".")
let c = col(".")
try
    set ff=unix
    w!
    "%s/\%x0d$//e
catch /E32:/
    echo "Sorry, the file is not saved."
endtry
let @/=_s
call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
0
ответ дан 15.05.2020, 05:22

Для того, чтобы символ ^ M соответствовал, мне пришлось визуально выбрать его, а затем использовать команду «Копировать в буфер обмена» для его извлечения. Вы можете проверить это, выполнив поиск символа, прежде чем пытаться выполнить команду замены.

/^M

следует выбрать первую неверную строку

:%s/^M/\r/g

заменит все ошибочные ^ M на возврат каретки.

Это как функции в MacVim, который основан на gvim 7.

РЕДАКТИРОВАТЬ:

Повторно возникла эта проблема на моем компьютере с Windows 10, на котором установлена ​​Ubuntu для Windows, и я думаю, что это вызывает проблемы с форматированием файлов для vim. В этом случае изменение ff на unix, mac или dos ничего не изменило, кроме как изменить ^ M на ^ J и обратно.

Решение в этом случае:

:%s/\r$/ /g
:%s/ $//g

Причина, по которой я пошел по этому пути, заключается в том, что я хотел убедиться, что я был неразрушающим с моим файлом. Я мог бы :%s/\r$//g, но это удалило бы возврат каретки сразу, и могло бы иметь неожиданные результаты. Вместо этого мы преобразуем единственный символ CR, здесь символ ^ M, в пробел, а затем удаляем все пробелы в конце строк (что для меня является желательным результатом независимо)

Извините за возрождение старого вопроса на это уже давно дан ответ, но, похоже, в замешательстве возникла некоторая путаница, и я подумал, что помогу кое-что прояснить, так как это происходит в поиске в Google.

28
ответ дан 15.05.2020, 05:27
  • 1
    php' s реализация сессии имеет встроенную сериализацию: это автоматически сериализирует сериализуемые типы (включает собственные типы). – JPot 18.09.2009, 05:20
  • 2
    Это - ПРАВИЛЬНЫЙ ответ. Как сказано выше, используйте < ctrl-v> < ctrl-m> получить литерал ^M вставленный в команду. – carlosayam 15.05.2020, 05:27
  • 3
    Я соглашаюсь, хотя я уверен это, если это работало на меня во время исходной регистрации тогда я wouldn' t отправили.;) – Metagrapher 15.05.2020, 05:27
  • 4
    нажимающий ctrl-m ctrl-v может работать для вставки символа, также, fwiw., но \r - то, что вставляет надлежащий возврат каретки. – Metagrapher 15.05.2020, 05:28

Теги

Похожие вопросы