GNU fold и GNU fmt понимают только байты, а не символы. Чтобы выполнить перенос до определенного количества символов, вы можете использовать sed.
sed 's/.\{20\}/&\n/g'
Если вы хотите разбить пробелы (полезно для многих языков), вот быстрый и грязный сценарий awk.
awk '
BEGIN {width = 20}
NF == 0 {column = 0; print}
{
split($0, a);
for (i in a) {
w = length(a[i]) + 1;
column += w;
if (column > width) {column = w; print ""};
if (column != w) printf " ";
printf "%s", a[i];
}
}
END {if (column) print ""}'
В любом случае убедитесь, что у вас правильные настройки локаль . В частности, LC_CTYPE
должен обозначать правильную кодировку символов, например LC_CTYPE = en_US.utf8
или LC_CTYPE = zh_CN.utf8
(подойдет любой код языка, доступный в вашей системе) для Unicode, закодированного как UTF-8.
Обратите внимание, что здесь учитываются символы, а не ширина экрана. Даже шрифты с фиксированной шириной могут иметь символы двойной ширины, и это обычно делается для китайских символов, например ширина символа 20 для текста выше занимает 40 столбцов на типичных терминалах.
Я нашел ответ случайно: проблема в том, что в однооконном режиме минимальный размер определяется размером трех частей окно:
Набор инструментов , в частности, может быть изменен по горизонтали так, чтобы он составлял только ширину одного столбца , и в этом случае это делает окно очень высоким. Решение состоит в том, чтобы просто перетащить точки с правой стороны панели инструментов, чтобы сделать ее шириной в два (или более) столбца.
Теперь минимальный размер более разумен:
program specified minimum size: 564 by 688
В Windows это будет В Гимпе. Выберите Редактировать
Затем Настройки..
Затем изображение по умолчанию.. и установите размер по умолчанию..
при необходимости отредактируйте расширенный параметр... нажмите ок..