Единственной причиной, по которой я когда-либо редактировал текстовый файл в Pico или Nano, а не в Vim, была его команда «Justify» ^J. Было бы переформатировать абзац текста, создавая разрывы строк при разрыве слов, чтобы текст плавно перемещался на экране фиксированной ширины - форматируйте текст так, чтобы он соответствовал заранее заданным 80 столбцам, создавая разрывы строк только между словами. Ограниченность функции была очень полезной, будь то форматирование длинных блоков комментариев, файлов документации или просто замена бесконечной строки параметров чем-то более читабельным.
Могу ли я сделать что-то подобное в Vim?
источник
'formatprg'
опцию.На эту тему есть отличный VimCast.
http://vimcasts.org/episodes/formatting-text-with-par/
По сути, вам необходимо установить
par
:И затем, поскольку вы хотите, чтобы столбцы были обернуты в 80 столбцов:
Теперь вы можете использовать
gq
оператор, как в других ответах (напримерgqip
), и он будет использовать Par вместо встроенного форматера Vim.Par довольно продвинут, и он будет красиво форматировать комментарии:
источник
От
:help usr_25
:Итак, все, что вам нужно сделать, это запустить
а затем введите
чтобы оправдать текст во всем файле.
(Конечно, вы также можете добавить
ru macros/justify.vim
в свой .vimrc, чтобы вам не приходилось вводить его каждый раз.)Примечание : это не добавляет разрывов строк для вас. Вы должны добавить их вручную с помощью
gq
. Для этого вы также должны установитьtextwidth
(по умолчанию 0) желаемое значение с помощьюи - если хотите - автоматическое перенос текста, установив
t
-flag черезЕсли вы хотите, вы можете установить отображение в вашем .vimrc, чтобы сделать все это за вас:
Это перемещает в начало файла (
gg
), переносит все строки (gq
доG
), а затем_j
добавляет текст.источник
:set fo+=a
опцию для автоматического переформатирования всего абзаца. Посмотрите на:help fo-table
другие варианты. Там также хорошие видео - учебник здесь ._j
Отображение добавлен макрос , кажется, оправдывает весь файл для меня, или он может быть ограничен с помощью визуального выбора построчно.Хотя помощь nano вызывает
^J
команду «Justify», она на самом деле не оправдывает текст, она переформатирует текст, разбивая строки перед правым полем экрана (или, думаю, в каком-то настраиваемом столбце).Вы можете сделать то же самое в VIM, установив переменную
textwidth
из:help 'textwidth'
:То есть: пока вы печатаете, если строка длиннее
textwidth
символов, VIM обернет строку первым пробелом, чтобы длина строки была меньше или равнаtextwidth
.Для этого опция
formatoptions
должна содержать буквуt
. Смотрите:help 'formatoptions'
и:help fo-table
для доступных опций, например, вас может заинтересоватьc
вариант, чтобы форматирование работало с комментариями.Edit : Вы можете выполнить ту же самую операцию, без необходимости положить
t
вformatoptions
, используя командуgw{motion}
, он форматирует текст между текущим положением курсора и положением курсора после{motion}
. Командаgw
доступна также в визуальном режиме, она форматирует выделенный текст.источник
Вот два простых варианта:
!fmt
!}fmt
Оба из них отправляют блок текста в Unix
fmt
, см.man fmt
Варианты. Вы можете передать аргументы опции из vim. Например, чтобы отформатировать блок шириной 50 символов, введите!}fmt -w 50
.источник
:%!fmt
и отменить один,u
если вам не нравится результат.Отметьте текст с помощью визуальной команды и затем используйте:
где 40 - ширина столбца и
j
означает выравнивание.источник
par
) и о том, почему ваше решение работает. Возможно, вы захотите добавить больше деталей, чтобы улучшить качество своего ответа и сделать его более полезным для будущих читателей.