Какое-то время у меня была одна конфигурация vim на моем ноутбуке, а другая - на рабочем столе, поэтому, когда я отредактировал файл в Dropbox между двумя, у меня возникли проблемы с форматированием.

В частности, у меня были ffs=mac,unix,dos на одном и ffs=unix,dos на другом.

Теперь, к счастью, эта установка исправлена! Тем не менее, остаются отставшие (те файлы, которые не были открыты, преобразованы и сохранены с новой настройкой).

Теперь иногда, когда я открываю файл, из которого он был сохранен с помощью ff "mac", я получаю кучу ^M

Итак, я делаю:

e ++ff=mac
setlocal ff=unix
w

Чтобы исправить проблему.

Что работает, чтобы сделать эту процедуру из 3 строк автоматически каждый раз, когда я открываю файл?

Или даже лучше, как это могло бы работать, чтобы делать это автоматически каждый раз, когда я открываю файл, у которого есть ff, который не является unix?

Я гуглил [vim task при каждом открытии буфера] и [vim macro при каждом открытии файла] и не видел ничего, что работает.

(Я уверен, что у vim в его, казалось бы, бесконечной мудрости есть что-то только для этого, поскольку, кажется, что-то есть только для чего-нибудь [как они представляли и создавали все эти черты ?!].)

2 ответа2

2

Я не решался бы автоматически исправить это, но следующий autocmd, кажется, делает эту работу.

autocmd BufRead * if line('$') == 1 && getline(1) =~# '\r' | edit ++ff=mac | w ++ff=unix | endif

Он обнаруживает файлы, которые состоят только из одной строки, содержащей встроенные символы CR, и автоматически выполняет преобразование. Я бы, вероятно, добавил :echomsg чтобы уведомить пользователя тоже.

1

Не пытайтесь автоматизировать обходной путь для установки с пробой, исправьте настройку; то есть последовательно использовать определенную строку, заканчивающуюся 'fileformat' на всех платформах, и гарантировать, что это будет правильно обнаружено (путем включения его в 'fileformats') в каждой системе!

Для файлов Vimscript этот канонический формат будет unix , потому что он обрабатывается как Vim в Windows, так и в Unix (и, я полагаю, Mac), в то время как dos будет вызывать ошибки при поиске в Unix.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .