В 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 разломит линию на куски на границе слова.