mcedit как скрыть символы перевода каретки ^M?
Модератор: /dev/random
mcedit как скрыть символы перевода каретки ^M?
Добрый день!
Мучает проблема, можно ли при редактировании какого-то файла в mcedit заставить скрывать символы перевода каретки ^M. Мне они глаза просто мозолят. В новой версии mc можно сохранить файл с видновым переносом строки, но можно ли просто скрывать эти переводы каретки?
Мучает проблема, можно ли при редактировании какого-то файла в mcedit заставить скрывать символы перевода каретки ^M. Мне они глаза просто мозолят. В новой версии mc можно сохранить файл с видновым переносом строки, но можно ли просто скрывать эти переводы каретки?
Re: mcedit как скрыть символы перевода каретки ^M?
Сделайте сначала dos2unix <Файл>, отредактируйте, и, если надо перегнать строки в мастдайный формат - unix2dos <Файл>
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
Спасибо сказали:
Re: mcedit как скрыть символы перевода каретки ^M?
То есть перед открытием каждого файла, мне придется запускать эту команду?
Мне конвертировать не нужно, есть проект, там все файлы с видновым переносом строки, также файлы проекта правят куча верстальщиков. Нужно, чтобы mc не показывал символы возврата каретки ^M.
Во всех современных редакторах можно выставить тип перевода строки, а как это сделать в mc?
Re: mcedit как скрыть символы перевода каретки ^M?
Говорю же вам: dos2unix / unix2dos. Или же делайте никому, кроме вас, ненужный патч к mc.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
dos2unix уже написал
вот unix2dos
Код: Выделить всё
sed '/\r$/!s/$/\r/' -i ~/t.txt
итого:
Код: Выделить всё
alias dos2unix='sed "s/\r$//"'
alias unix2dos='sed "/\r$/b;s/$/\r/"'
это куда-нибудь в /etc/profile
Re: mcedit как скрыть символы перевода каретки ^M?
То есть перед открытием каждого файла, мне придется запускать эти команды?
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
сделайте скрипт, что-то вроде
Код: Выделить всё
#!/bin/sh
dos2unix -i $1
mcedit $1
unix2dos -i $1
и повесьте его на F4: тогда этот скрипт сначала сконвертирует файл в нормальный вид, потом отредактирует, а потом отконвертирует обратно в маздаевский.
При этом dos2unix & unix2dos надо брать мои, а не от eddy - при всём уважении, я не знаю, как его конверторы переносят ключ -i.
Re: mcedit как скрыть символы перевода каретки ^M?
Напишите скрипт, который будет обрабатывать вам полученные файлы. И другой скрипт, который будет возвращать мастдайное окончание строки и архивировать все в какой-нибудь zip (или что там еще в мастдае "искаропки").
Да у меня стандартные бинарники, входящие почти в каждый дистрибутив И -i указывать не надо, преобразование и так делается "in place"
Да у меня стандартные бинарники, входящие почти в каждый дистрибутив И -i указывать не надо, преобразование и так делается "in place"
Код: Выделить всё
dos2unix -h
usage:
dos2unix [--verbose|-v] [--test|-t] [--force|-f] \
[--<x>2<y>|--auto|-<Z>] \
[<file name> [...]]
where:
--auto, -A output will be set based upon auto-detection
of source format
--d2u, -U perform DOS -> UNIX conversion
--m2u, -T perform MAC -> UNIX conversion
--u2d, -D perform UNIX -> DOS conversion
--u2m, -M perform UNIX -> MAC conversion
--d2m, -O perform DOS -> MAC conversion
--m2d, -C perform MAC -> DOS conversion
--force suppress internal conversion type corrections
based on autodetected input format
--skipbin, -b skip binary files
--test, -t don't write any conversion results; useful with
--verbose to just report on source type
--verbose, -v print extra information on stderr
--version, -V print version information on stderr
- when no options are given then input format will be automatically detected
and converted as follows:
DOS -> UNIX
MAC -> UNIX
UNIX -> DOS
- same as above applies if --auto option is used
- when no file is given, then stdin is used as input and stdout as output
- binary files will be skipped automatically if option --skipbin
(or -b) is used
- stray '\r' characters (without a following '\n') in files in DOS format are
reported but only conversion 'DOS -> Unix' affects them (they are skipped)
- stray '\n' characters in files in MAC format are not detected for now
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
ага. но видите-ли, в мой дистр такие не входят ;)
а вот sed есть у всех.
ладно. вот эти скрипты:
Код: Выделить всё
$ cat unix2dos
#!/bin/sh
if [ -z "$1" ]; then
echo "использование: `basename $0` ИМЯ_ФАЙЛА"
exit 70
else
sed -i '/\r$/b;s/$/\r/' $1
fi
$ cat dos2unix
#!/bin/sh
if [ -z "$1" ]; then
echo "использование: `basename $0` ИМЯ_ФАЙЛА"
exit 70
else
sed -i 's/\r$//' $1
fi
эти полностью эквивалентны вашим (только мак строки не умеют)
Re: mcedit как скрыть символы перевода каретки ^M?
Сделал вот так:
export EDITOR="/home/werzer/edit.sh"
cat /home/v.dmitriev/edit.sh:
#!/bin/sh
if [ `echo $1 | egrep '\.(tpl)|(html)$'` ]; then
dos2unix $1 >/dev/null 2>&1
mcedit $1
unix2dos $1 >/dev/null 2>&1
else
mcedit $1
fi
Только все равно вышеуказанный скрипт не помог, потому что есть файлы и с юниксовым переводом строк, а когда буду запускать unix2dos, то тогда получается весь файл изменился и svn diff покажет лабуду Нужно просто скрыть эти переводы коретки ^M, как это можно сделать?
export EDITOR="/home/werzer/edit.sh"
cat /home/v.dmitriev/edit.sh:
#!/bin/sh
if [ `echo $1 | egrep '\.(tpl)|(html)$'` ]; then
dos2unix $1 >/dev/null 2>&1
mcedit $1
unix2dos $1 >/dev/null 2>&1
else
mcedit $1
fi
Только все равно вышеуказанный скрипт не помог, потому что есть файлы и с юниксовым переводом строк, а когда буду запускать unix2dos, то тогда получается весь файл изменился и svn diff покажет лабуду Нужно просто скрыть эти переводы коретки ^M, как это можно сделать?
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
если вы будете запускать мой скрипт dos2unix для юниксоидных файлов, то ничего не изменится - там проверка есть.
утилиты eddy тоже наверное так умеют, но это уже не ко мне вопрос. То-же самое касается и unix2dos. Зачем вы вводите дополнительные проверки - не слишком понятно (они могут пригодится разве что для редактирования двоичных файлов, которые наши утилиты могут переконвертить случайно)
здесь ошибка: не знаю что вы хотели, но без скобок работать будет точно так-же.
Re: mcedit как скрыть символы перевода каретки ^M?
Каждый раз для редактирования файла преобразовывать его из виндового формата в юниксовый и обратно? Да побойтесь бога, советнички!!!
В mc можно настроить использование встроенного или внешнего редактора. Если знаете редактор, который может работать с концами строк так, как вам надо - присоедините его внешним. К сожалению, не знаю, реализована ли в последнем MC заявка на добавление клавиши для вызова встроенного редактора при включенной настройке на использование по F4 внешнего (а была такая). Но можно повесить внешний редактор на F3 вместо просмотрщика для указанного списка расширений (и может даже виндовый через вайн?)
В крайнем случае я б лучше запустил FAR через wine (у меня такое работало) для работы с виндовыми текстами, если уж нет ничего более подходящего!
Сомневаюсь, что тексты с виндовыми и юниксовыми концами строк перемешаны совсем уж произвольно. Скорее всего, они строго разделены по каталогам и могут редактироваться разными редакторами вполне осознано.
P.S. Обратил внимание на приписку внизу сообщений drBatty - очень хорошо сказано
В mc можно настроить использование встроенного или внешнего редактора. Если знаете редактор, который может работать с концами строк так, как вам надо - присоедините его внешним. К сожалению, не знаю, реализована ли в последнем MC заявка на добавление клавиши для вызова встроенного редактора при включенной настройке на использование по F4 внешнего (а была такая). Но можно повесить внешний редактор на F3 вместо просмотрщика для указанного списка расширений (и может даже виндовый через вайн?)
В крайнем случае я б лучше запустил FAR через wine (у меня такое работало) для работы с виндовыми текстами, если уж нет ничего более подходящего!
Сомневаюсь, что тексты с виндовыми и юниксовыми концами строк перемешаны совсем уж произвольно. Скорее всего, они строго разделены по каталогам и могут редактироваться разными редакторами вполне осознано.
P.S. Обратил внимание на приписку внизу сообщений drBatty - очень хорошо сказано
Registered Linux user number 436365
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
а что тут такого? если файл в кривом формате, то самое логичное - преобразовать его в нормальный. И может быть потом - обратно.
SHIFT+F4 разве отменили?
в принципе многие редакторы умеют работать с вендовыми переносами. я юзаю kate. другое дело, что даже в ней я обычно сначала конвертирую файл в нормальный формат (например, чтоб моя любимая sed не путалась, хотя она тоже умеет такое жрать).
мои скрипты сами определяют формат. причём отдельно для каждой строки. потому не вижу в этом проблемы. проблемы в быстродействии тоже нет - поверьте, тексты в 10...100Мб будут намного дольше открываться и сохранятся, чем конвертироватся.
спасибо. но в данном случае это не "хрен знает какое" решение, а вполне проверенное и общепринятое.
- Nazyvaemykh
- Сообщения: 438
- Статус: Подопытный участник
Re: mcedit как скрыть символы перевода каретки ^M?
…и чего только люди не придумают, лишь бы VIM не использовать.
¡ Страсть к разрушению есть творческая страсть!
Re: mcedit как скрыть символы перевода каретки ^M?
А флейма-то сколько
Топикстартеру: фишка не реализована пока что.
http://www.midnight-commander.org/ticket/1652
Как ускорить реализацию: само собой, ускорение произойдёт после приаттачивания патча к тикету.
Второй способ: добавить себя в поле, CC или проголосовать за фичреквест, жмакнув на стрелочку вверх (или стрелочку вниз - кому как)
Топикстартеру: фишка не реализована пока что.
http://www.midnight-commander.org/ticket/1652
Как ускорить реализацию: само собой, ускорение произойдёт после приаттачивания патча к тикету.
Второй способ: добавить себя в поле, CC или проголосовать за фичреквест, жмакнув на стрелочку вверх (или стрелочку вниз - кому как)
Re: mcedit как скрыть символы перевода каретки ^M?
Как вы думаете, почему патч (на написание которого у разработчиков mc ушло бы максимум 10-15 минут) до сих пор не написали? Да не нужен он!
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
Re: mcedit как скрыть символы перевода каретки ^M?
Вы весьма смело говорите за разработчиков.
Одна из причин, по которой этот фичреквест (и многие другие) до сих пор не реализованы: много более важных багрепортов, требующих фиксинга. http://www.midnight-commander.org/report/1. Обсуждаемый здесь фичреквест - это лишь один тикет из почти трёхсот (не самый важный). Но это абсолютно не означает, что фича не нужна.
Ну ещё весомая причина: лениво иногда бывает.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
такую фичу и я могу реализовать, хотя и дольше, чем за 15 минут, но не слишком это и долго. Но не за 15 - потому-что я не знаю чужой код, а разрабы - знают, им действительно минут 15. Вот только, как бы там не было, но такой фичи скорее всего не будет - есть проблемы поважнее.
- /dev/random
- Администратор
- Сообщения: 5282
- ОС: Gentoo
Re: mcedit как скрыть символы перевода каретки ^M?
drBatty писал(а): ↑26.02.2010 07:44такую фичу и я могу реализовать, хотя и дольше, чем за 15 минут, но не слишком это и долго. Но не за 15 - потому-что я не знаю чужой код, а разрабы - знают, им действительно минут 15. Вот только, как бы там не было, но такой фичи скорее всего не будет - есть проблемы поважнее.
Да там и 5 хватит. grep'ом найти read'ы (или fscanf'ы) и вставить туда фильтрацию лишнего символа.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
или fprintf или write или...
там вообще вроде через ncurses или как-то так...
- /dev/random
- Администратор
- Сообщения: 5282
- ОС: Gentoo
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: mcedit как скрыть символы перевода каретки ^M?
ну если там просто read... а если нет?
Re: mcedit как скрыть символы перевода каретки ^M?
Поэтому я и говорил разработчикам достаточно нескольких минут. Простому смертному придется очень долго ковыряться в исходниках, чтобы найти, куда дописать фильтрацию отображения этих жутких \r.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
- DarkHobbit
- Сообщения: 52
- ОС: ASPLinux -> Gentoo -> Debian
- Контактная информация: