Переформатировать ширину текста VIM

Я хочу переформатировать мой файл, чтобы максимальная ширина линии была 79. Я сделал :set tw=79 а также gggqG и результаты оказались не такими, как я ожидал. Когда строка меньше 79 столбцов, символы из строки ниже нее перемещаются вверх, а строки с более чем 79 столбцами не разбиваются на две строки.

редактировать: Ну, я был почти ошибочным в том, что он разрывает строки над 79 за исключением строки со звездочками.

--CONVENTIONS**************************************************************************************

Кроме того, он все еще перемещает символы вверх, когда в строке <79.

2 ответа

Решение

Одно из возможных решений, хотя и не самое лучшее.

Undefine formatexpr и пусть внешний fold Программа для форматирования текста до 79 символов шириной.

:set formatexpr=
:set formatprg=fold\ -w\ 79

И сейчас:

gg              # Go to beginning of file.
gq              # Format until...
G               # End of file.

И, наконец, удалите эти возвраты каретки (^M):

:%s/\r//g

В моем тесте были изменены некоторые акцентированные символы, а некоторые другие строки были искажены, но попробуйте сами. В противном случае вы можете написать свою собственную функцию форматирования и использовать ее с formatexpr вариант.

Поместите пустую строку между разными абзацами. Затем выполните переформатирование.

Другие вопросы по тегам