Как остановить разрыв строки в VIM - PullRequest
223 голосов
/ 17 февраля 2010

Мне нравится, что длинные строки отображаются более чем на одной строке терминала; Мне не нравится, что vim вставляет новые строки в мой текст. Какую часть .vimrc я должен изменить?

Ответы [ 10 ]

270 голосов
/ 17 февраля 2010

Использование

:set wrap

Для визуального переноса строк, то есть строка по-прежнему представляет собой одну строку текста, но Vim отображает ее на нескольких строках.

Используйте

:set nowrap

Для отображения длинных строк одной строкой (т. Е. Вам нужно прокрутить горизонтально, чтобы увидеть всю строку).

186 голосов
/ 17 февраля 2010

Мне нравится, что длинные строки отображаются более чем на одной строке терминала

Этот вид визуального / виртуального переноса строк включается с помощью опции окна wrap:

set wrap

Мне не нравится, что vim вставляет новые строки в мой текст.

Чтобы отключить перенос физической строки, снимите оба параметра буфера textwidth и wrapmargin:

set textwidth=0 wrapmargin=0
32 голосов
/ 17 февраля 2010

Я не уверен, что полностью понимаю, но вы, возможно, ищете параметр конфигурации 'formatoptions'. Попробуйте что-то вроде :set formatoptions-=t. Параметр t вставит разрывы строк, чтобы сделать перенос текста на ширину, установленную textwidth. Вы также можете поместить эту команду в .vimrc, просто удалите двоеточие (:).

26 голосов
/ 17 февраля 2010

Использование :set nowrap .. работает как шарм!

24 голосов
/ 17 февраля 2010

:set tw=0

VIM не будет автоматически вставлять разрывы строк, но сохранит перенос строк.

16 голосов
/ 17 февраля 2010

Вы можете найти set lbr полезным;с set wrap на этом будет перенос, но только обрезка строки в пробеле, а не в середине слова.

например

without lbr the li
ne can be split on
a word

и

with lbr on the
line will be
split on 
whitespace only
8 голосов
/ 27 сентября 2016

set formatoptions-=t Сохраняет визуальную ширину текста, но не добавляет новую строку в режиме вставки.

4 голосов
/ 11 мая 2016

Если, как и я, вы используете gVim в Windows, тогда ваш .vimrc файл может быть источником другого Vimscript-файла «примера», который автоматически устанавливает textwidth (в моем случае 78) для текстовых файлов.

Мой ответ на такой же вопрос, как этот - Как остановить перенос текста в gVim в столбце 80 - на сайте обмена Vi и Vim Stack :

В моем случае Комментарий Витора предложил мне выполнить следующее:

:verbose set tw?

Это дало мне следующий вывод:

textwidth=78
      Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim

В vimrc_example.vim я нашел соответствующие строки:

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  ...

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  ...

И я обнаружил, что мой .vimrc получает этот файл:

source $VIMRUNTIME/vimrc_example.vim

В моем случае я не хочу, чтобы для любых файлов было установлено textwidth, поэтому я просто закомментировал соответствующую строку в vimrc_example.vim .

4 голосов
/ 19 марта 2015

Странно, что для такой простой настройки потребуется такое количество «фокус-покуса».

Чтобы ответить на ваш вопрос сейчас, мне показалось, что он работает с комбинацией следующего:

:set wrap linebreak nolist

(это, кажется, предотвращает разрыв существующих строк, просто перенос.)

И

set formatoptions=l

(это предотвращает разрыв новых / отредактированных строк, в то время как + = не делает этого для меня, так как другие настройки / плагины, кажется, находят место и добавляют свои собственные опции, которые переопределяют мои.)

3 голосов
/ 23 сентября 2016

Правильно, что set nowrap позволит вам вставить длинную строку без добавления новых строк в vi / vim, но тогда строка не будет визуально перенесена для удобства чтения. Вместо этого вам нужно прокрутить только одну длинную строку.

Чтобы строка была визуально перенесена, но в нее не вставлены символы новой строки, задайте set wrap (который, вероятно, по умолчанию не требуется устанавливать) и set textwidth = 0 .

В некоторых системах по умолчанию установлено значение textwidth = 0 . Если это не так, добавьте set textwidth = 0 в ваш файл .exrc, чтобы он стал вашим пользователем по умолчанию для всех сеансов vi / vim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...