Плохая поддержка UTF-8

и другие vi-подобные редакторы

Модератор: /dev/random

Ответить
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Плохая поддержка UTF-8

Сообщение ZyX »

Обнаружил ещё одно свидетельство «замечательной» поддержки UTF-8 в Vim: функция
printf принимает указание ширины в байтах, из-за чего приходится применять
костыли вида

function s:F.stuf.printl(len, str)
    return a:str . repeat(" ", a:len-s:F.stuf.strlen(a:str))
endfunction


Это вместо

printf("%-*s", a:len, a:str)
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5281
ОС: Gentoo

Re: Плохая поддержка UTF-8

Сообщение /dev/random »

ZyX писал(а):
03.02.2010 20:13
Обнаружил ещё одно свидетельство «замечательной» поддержки UTF-8 в Vim: функция
printf принимает указание ширины в байтах


Всё правильно. Это поведение соответствует POSIX:

* An optional minimum field width. If the converted value has fewer bytes than the field width, it shall be padded with spaces by default on the left; it shall be padded on the right if the left-adjustment flag ( '-' ), described below, is given to the field width. The field width takes the form of an asterisk ( '*' ), described below, or a decimal integer.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Плохая поддержка UTF-8

Сообщение ZyX »

/dev/random писал(а):
03.02.2010 20:28
ZyX писал(а):
03.02.2010 20:13
Обнаружил ещё одно свидетельство «замечательной» поддержки UTF-8 в Vim: функция
printf принимает указание ширины в байтах


Всё правильно. Это поведение соответствует POSIX:

* An optional minimum field width. If the converted value has fewer bytes than the field width, it shall be padded with spaces by default on the left; it shall be padded on the right if the left-adjustment flag ( '-' ), described below, is given to the field width. The field width takes the form of an asterisk ( '*' ), described below, or a decimal integer.

Да, я видел надпись про байты в справке Vim, и, если бы рядом была функция
wprintf, то претензий бы не было. А так я не вижу смысла сегодня, когда UTF-8
стал стандартом, иметь byte-ориентированную printf. Сомневаюсь, что вы где-либо
найдёте дополнение, которому нужно было бы такое поведение.


eXeC001er писал(а):
05.02.2010 14:06
подскажите как сделать так чтобы по Ctrl+N слова искались только в файлах которые расположены в текущем каталоге?
а то для perl после нажатия на Ctrl+N происходит поиск по всем модулям которые расположены в дефолтных путях поиска perl-модулей.

:help 'complete'
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

ZyX писал(а):
07.02.2010 02:49
Сомневаюсь, что вы где-либо
найдёте дополнение, которому нужно было бы такое поведение.

у утф8 полно недостатков. в т.ч. и связанных с безопасностью. на этой кодировке глючат множество програм и утилит в любых ОС.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Плохая поддержка UTF-8

Сообщение ZyX »

drBatty писал(а):
07.02.2010 13:49
ZyX писал(а):
07.02.2010 02:49
Сомневаюсь, что вы где-либо
найдёте дополнение, которому нужно было бы такое поведение.

у утф8 полно недостатков. в т.ч. и связанных с безопасностью. на этой кодировке глючат множество програм и утилит в любых ОС.

А есть лучшие альтернативы для поддержки произвольного языка?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

ZyX писал(а):
08.02.2010 02:08
А есть лучшие альтернативы для поддержки произвольного языка?

нет :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение ТВЭЛ »

drBatty писал(а):
07.02.2010 13:49
у утф8 полно недостатков. в т.ч. и связанных с безопасностью. на этой кодировке глючат множество програм и утилит в любых ОС.

Это недостаток глючных программ, но уж точно не кодировки. Споры о кодировках вообще следовало прекратить ещё в конце прошлого века, IMHO ) Всем было бы лучше. Забудьте про всё кроме UTF-8.
Время не ждет.
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: Плохая поддержка UTF-8

Сообщение Luinnar »

ТВЭЛ писал(а):
09.02.2010 12:22
drBatty писал(а):
07.02.2010 13:49
у утф8 полно недостатков. в т.ч. и связанных с безопасностью. на этой кодировке глючат множество програм и утилит в любых ОС.

Это недостаток глючных программ, но уж точно не кодировки. Споры о кодировках вообще следовало прекратить ещё в конце прошлого века, IMHO ) Всем было бы лучше. Забудьте про всё кроме UTF-8.

Я, честно говоря, тоже удивлён, никогда не слышал о проблемах вызванных самой UTF-8, а не программами, её не поддерживающими.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

Luinnar писал(а):
09.02.2010 14:18
Я, честно говоря, тоже удивлён, никогда не слышал о проблемах вызванных самой UTF-8, а не программами, её не поддерживающими.

проблема в том, что в кодировке UTF-8слишком много букв и они разные. конечно, если вы редактируете жалкие текстики на 1000 строк - это незаметно. Однако попытайтесь открыть что-то скажем на 77Мб. Поиск и замена в таком тексте vim-ом - просто извращение (хотя всё остальное - ещё хуже. разве что sed...)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение ТВЭЛ »

Немного оффтоп, но всё же интересно: а что за скрипт такой, на 77 Мб? Или текст? Думаю, в 99% случаев эта гадость представляет самой раздутое непотребство, которое не нужно открывать и которым не нужно пользоваться. А вот что может входить в оставшийся процент - не представляю. Расскажите, пожалуйста.
Время не ждет.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

ТВЭЛ писал(а):
15.02.2010 05:34
Думаю, в 99% случаев эта гадость представляет самой раздутое непотребство, которое не нужно открывать и которым не нужно пользоваться. А вот что может входить в оставшийся процент - не представляю. Расскажите, пожалуйста.

например дамп этого форума. не, я в курсе, про mysqldump database table, но даже если тянуть данные по таблицам, то даже на моём махоньком форуме с 8470 постами и то 18Мб. Или вы предлагаете дёргать из базы 8470 файлов?
есть ещё множество примеров. а вот про "непотребство" не понял, это что вообще?

по теме: никто не помнит, как поменять цвет? например я хочу сделать светло-синие коменнты.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение ТВЭЛ »

А разве с базой данных не лучше работать специально предназначенными для этого средствами?
Время не ждет.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

ТВЭЛ писал(а):
15.02.2010 08:11
А разве с базой данных не лучше работать специально предназначенными для этого средствами?

конечно лучше. но не всегда. как, например их конвертировать? скажем из phpbb в ipboard (если брать те-же форумы)? т.е. конечно для этого наддо писать конвертор, но не в слепую-же их писать (готовые решения работают слишком криво, потому если вы используете готовый, то его тоже надо допиливать (или допиливать результат его работы)).

ЗЫЖ ещё вопрос по сабжу: никак что-то не смог найти отключение переноса строк при наборе: т.е. длинные строки не режутся при показе (как мне и надо), но вот если набирать - то режутся. Никто не помнит, как это отключить?

ЗЗЫЖ ещё выложу чуть попозже файл sed.vim, а то в оригинале какой-то недоделанный :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Плохая поддержка UTF-8

Сообщение ZyX »

drBatty писал(а):
15.02.2010 09:03
ТВЭЛ писал(а):
15.02.2010 08:11
А разве с базой данных не лучше работать специально предназначенными для этого средствами?

конечно лучше. но не всегда. как, например их конвертировать? скажем из phpbb в ipboard (если брать те-же форумы)? т.е. конечно для этого наддо писать конвертор, но не в слепую-же их писать (готовые решения работают слишком криво, потому если вы используете готовый, то его тоже надо допиливать (или допиливать результат его работы)).

ЗЫЖ ещё вопрос по сабжу: никак что-то не смог найти отключение переноса строк при наборе: т.е. длинные строки не режутся при показе (как мне и надо), но вот если набирать - то режутся. Никто не помнит, как это отключить?

ЗЗЫЖ ещё выложу чуть попозже файл sed.vim, а то в оригинале какой-то недоделанный :(

Они именно режутся (то есть в результате в файле появляется «\n»)? Тогда, если
не ошибаюсь, смотреть настройку «formatoptions», точнее сразу «:h fo-table»:

                                                        *fo-table*
You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability. 

letter   meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.


Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

ZyX
спасибо. я поставил

Код: Выделить всё

 autocmd FileType text setlocal textwidth=777

и теперь строки не разбиваются, как мне и надо было. в дефолтные 78 я часто не укладывался в своих скриптах, а в sed нельзя строки разбивать (ну во всяком случае я не разбиваю - мало-ли)


ЗЫЖ а про цвета вы не помните?
UPD сам разобрался: сначала поправил colors/desert.vim
а потом включил её в ~/.vimrc
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: Плохая поддержка UTF-8

Сообщение Luinnar »

drBatty писал(а):
15.02.2010 21:50
ZyX
спасибо. я поставил

Код: Выделить всё

 autocmd FileType text setlocal textwidth=777

и теперь строки не разбиваются, как мне и надо было. в дефолтные 78 я часто не укладывался в своих скриптах, а в sed нельзя строки разбивать (ну во всяком случае я не разбиваю - мало-ли)


ЗЫЖ а про цвета вы не помните?
UPD сам разобрался: сначала поправил colors/desert.vim
а потом включил её в ~/.vimrc

Для того чтобы отключить обрезку строк, нужно установить textwidth в 0:

Код: Выделить всё

set tw=0
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Плохая поддержка UTF-8

Сообщение drBatty »

Luinnar писал(а):
24.02.2010 14:24
Для того чтобы отключить обрезку строк, нужно установить textwidth в 0:
Код
set tw=0

я всё-же лучше поставлю 777. ИМХО.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить