В VIM, как я сломаю одну очень длинную линию на несколько строк?

Скажем, у меня очень длинная строка в редакторе VIM (скажем, около 300 + символов). Как я сломаю это на несколько строк, чтобы границы слов грубо разрывались на 80 символов?

Пример:

This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line

к

This is a really long line 
This is a really long line
This is a really long line
This is a really long line
This is a really long line
This is a ...

Ответ 1

Vim делает это очень легко (сломайте линии на границах слов).

gq{motion} % format the line that {motion} moves over
{Visual}gq % format the visually selected area
gqq        % format the current line
...

Я предлагаю вам проверить :help gq и :help gw.

Также установка текстовой ширины (tw) даст вам автоматический разрыв строки при превышении во время ввода. Он также используется в gq, хотя если отключено gq, ломается размер окна или 79 в зависимости от того, что наступает первым.

:set tw=80

Установив параметры формата, чтобы включить ширину текста, vim автоматически разбивается на настройку tw.

:set fo+=t

Ответ 2

Сначала установите vim так, чтобы он понял, что вы хотите 80 символов:

:set tw=80

затем, hilight строку:

V

и сделайте vim отформатируйте его:

gq

Ответ 3

Это не связано с VIM, но вы можете использовать программу fmt, как в

$ fmt myfile

Ответ 4

Если вы на * nix, у вас, возможно, есть fold.

Выберите регион, который вы хотите использовать v, затем вы можете разбить пробелы шириной 80, используя:

!fold --spaces --width=80

Это в той же мере, что и при использовании gq.

Однако, если вы просто хотите разбить символ 80 и не ограничиваться пробелами, которые вы можете использовать:

!fold --width=80

Если вы хотите, чтобы одно нажатие клавиши просто установило сопоставление - я использовал

vmap <f1> !fold --width=80<CR>

Ответ 5

Мне нужно было переформатировать целый файл, а не одну строку. Как указывает Вернси, я мог бы использовать "fmt", но следующая последовательность в vim тоже сделала трюк (заимствование из различных ответов здесь):

<ESC>
:setl tw=80 fo=t
1GVGgq

Ответ 6

Чтобы разделить длинные строки в полном документе без удаления уже существующих разрывов строк, используйте:

:set formatoptions+=w
:set tw=80
gggqG

Ответ 7

Для сплошных строк текста выделите область, используя v в обычном режиме, затем нажмите

:s/\v(.{80})/\1\r/g

Это добавит новую строку в конце каждого 80-го символа.

:s/       replaces within the current select
\v        uses regular expressions
(.{80})   selects 80 characters & placed them into group one
\1\r      replaces group one with group one and a newline

Ответ 8

Как быстро и противно, возможно, попробуйте следующую карту:

map q 080lwbels<CR><ESC>

который гласит:

  • запустите 0-ю позицию строки,
  • переместитесь на 80-е место char вправо,
  • перейти к началу следующего слова,
  • вернуться к предыдущему слову,
  • перейти к концу текущего слова,
  • выберите один char и
  • замените CR для этого char.

Тогда удар q и CR разломит линию на куски на границе слова.