Плохая поддержка UTF-8
Модератор: /dev/random
Плохая поддержка UTF-8
Обнаружил ещё одно свидетельство «замечательной» поддержки 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)
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
Всё правильно. Это поведение соответствует 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.
Re: Плохая поддержка UTF-8
/dev/random писал(а): ↑03.02.2010 20:28
Всё правильно. Это поведение соответствует 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. Сомневаюсь, что вы где-либо
найдёте дополнение, которому нужно было бы такое поведение.
:help 'complete'
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Плохая поддержка UTF-8
у утф8 полно недостатков. в т.ч. и связанных с безопасностью. на этой кодировке глючат множество програм и утилит в любых ОС.
Re: Плохая поддержка UTF-8
А есть лучшие альтернативы для поддержки произвольного языка?
Re: Плохая поддержка UTF-8
Это недостаток глючных программ, но уж точно не кодировки. Споры о кодировках вообще следовало прекратить ещё в конце прошлого века, IMHO ) Всем было бы лучше. Забудьте про всё кроме UTF-8.
Время не ждет.
Re: Плохая поддержка UTF-8
Я, честно говоря, тоже удивлён, никогда не слышал о проблемах вызванных самой UTF-8, а не программами, её не поддерживающими.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Плохая поддержка UTF-8
проблема в том, что в кодировке UTF-8слишком много букв и они разные. конечно, если вы редактируете жалкие текстики на 1000 строк - это незаметно. Однако попытайтесь открыть что-то скажем на 77Мб. Поиск и замена в таком тексте vim-ом - просто извращение (хотя всё остальное - ещё хуже. разве что sed...)
Re: Плохая поддержка UTF-8
Немного оффтоп, но всё же интересно: а что за скрипт такой, на 77 Мб? Или текст? Думаю, в 99% случаев эта гадость представляет самой раздутое непотребство, которое не нужно открывать и которым не нужно пользоваться. А вот что может входить в оставшийся процент - не представляю. Расскажите, пожалуйста.
Время не ждет.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Плохая поддержка UTF-8
например дамп этого форума. не, я в курсе, про mysqldump database table, но даже если тянуть данные по таблицам, то даже на моём махоньком форуме с 8470 постами и то 18Мб. Или вы предлагаете дёргать из базы 8470 файлов?
есть ещё множество примеров. а вот про "непотребство" не понял, это что вообще?
по теме: никто не помнит, как поменять цвет? например я хочу сделать светло-синие коменнты.
Re: Плохая поддержка UTF-8
А разве с базой данных не лучше работать специально предназначенными для этого средствами?
Время не ждет.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Плохая поддержка UTF-8
конечно лучше. но не всегда. как, например их конвертировать? скажем из phpbb в ipboard (если брать те-же форумы)? т.е. конечно для этого наддо писать конвертор, но не в слепую-же их писать (готовые решения работают слишком криво, потому если вы используете готовый, то его тоже надо допиливать (или допиливать результат его работы)).
ЗЫЖ ещё вопрос по сабжу: никак что-то не смог найти отключение переноса строк при наборе: т.е. длинные строки не режутся при показе (как мне и надо), но вот если набирать - то режутся. Никто не помнит, как это отключить?
ЗЗЫЖ ещё выложу чуть попозже файл sed.vim, а то в оригинале какой-то недоделанный
Re: Плохая поддержка UTF-8
drBatty писал(а): ↑15.02.2010 09:03
конечно лучше. но не всегда. как, например их конвертировать? скажем из 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
ZyX
спасибо. я поставил
и теперь строки не разбиваются, как мне и надо было. в дефолтные 78 я часто не укладывался в своих скриптах, а в sed нельзя строки разбивать (ну во всяком случае я не разбиваю - мало-ли)
ЗЫЖ а про цвета вы не помните?
UPD сам разобрался: сначала поправил colors/desert.vim
а потом включил её в ~/.vimrc
спасибо. я поставил
Код: Выделить всё
autocmd FileType text setlocal textwidth=777
и теперь строки не разбиваются, как мне и надо было. в дефолтные 78 я часто не укладывался в своих скриптах, а в sed нельзя строки разбивать (ну во всяком случае я не разбиваю - мало-ли)
ЗЫЖ а про цвета вы не помните?
UPD сам разобрался: сначала поправил colors/desert.vim
а потом включил её в ~/.vimrc
Re: Плохая поддержка UTF-8
drBatty писал(а): ↑15.02.2010 21:50ZyX
спасибо. я поставил
Код: Выделить всё
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
я всё-же лучше поставлю 777. ИМХО.