Почему я не могу остановить vim от упаковки моего кода?

116

Я не могу помешать vim обернуть мой код Python. Если я войду :set nowrapкак чемпион, но все равно обернется.

Я могу нажать, Jчтобы объединить разделенные строки кода, так что кажется, что вставляется настоящий возврат каретки. Я просто не понимаю, почему и как это остановить.

Дэвид Бергер
источник
15
:set nowrapтолько предотвращает перенос отображения строк, но не вставку разрывов строк.
rampion

Ответы:

115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Если вы говорите об автоматическом переносе длинных строк, отправляя их в следующую, попробуйте

:set textwidth=0 
:set wrapmargin=0
Стефано Борини
источник
12
Некоторые плагины, кажется, отменяют этот параметр.
Измир Рамирес
Параметры twи wpдля меня не особо сработали, поэтому мне пришлось пойти на formatoptions github.com/ain/.vim/blob/…
Айн Тохври
2
Если tw и wp по-прежнему не решают проблему, посмотрите этот пост на SU, который помог мне решить мою проблему: superuser.com/questions/250112/…
Alien_SM
3
Удаление filetype plugin onиз моей .vimrcсделало это за меня.
1
С этим ответом вы не можете использовать gqдля перенастройки абзаца вручную по ширине текста. @ Engineero должен быть правильным.
Dylanthepiguy
86

Ни один из других ответов не помог мне (почему IDK).

:set wrap! Сделал трюк для меня (используя GVim для Windows).

Knomo Seikei
источник
8
Это решает несколько иную проблему. wrapобеспечивает появление линии упаковки, но не на самом деле разбить текст на новые строки. Вы, вероятно, wrapвключили, поэтому :set wrap!выключили. Вы можете проверить, с :set wrap?каким эхом будет отображаться текущее значение (например, wrapили nowrap).
shadowtalker
1
Это решение работает для меня на Mac OsX. Vim версия 7.4
Shnkc
Это сработало для меня, я изменил textwidthи wrapmarginсначала, но на самом деле это заставило vim обновлять и повторно отображать без каких-либо обернутых строк.
Kredns
Ding din ding! Работает в neovim
Gjaa
Какой волшебный момент, когда вы обнаруживаете, что команда, которая вам действительно нужна, такая выразительная и простая. Спасибо разработчикам
Capitan Empanada
57

set formatoptions-=tдолжен сделать свое дело. set formatoptions+=tснова включит автоматический перенос.

Дополнительную информацию о том, что вы можете делать formatoptions, см. В документации .

Engineero
источник
2
Спасибо! Ваше решение - единственное, что сработало для меня. Vim больше не вставляет новые строки, когда я вхожу в режим вставки.
Geremia
2
Ага. Это настоящее решение.
Расс Бейтман
16

Чтобы vim не переносил длинные строки, я использую эти две строки в моем .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing
gon1332
источник
12

Чтобы отключить перенос строки, вы можете ввести :set wrap!или добавить эту команду в свой ~/.vimrc.

Mapsy
источник
2
Это не влияет на автоматическую вставку реальных разрывов строки, о которой идет речь.
Артур Такка
9

Может быть, это заданная ширина текста, которая автоматически разрывает строки при достижении определенной длины.

:set tw=0

Если это не удается, поиграйте, например, с

:set wrap linebreak textwidth=0 

и

:set virtualedit=insert
н.у.к.
источник
2
wrap и linebreak не вставляют фактические концы строк в буфер, так что, похоже, это не его проблема.
А. Леви,
0

Откройте vimrc_example.vim (да, это файл в Vim74) и установите textwidth = 0.

Бобби
источник
0

На macbook pro я закомментировал в .vimrc строку

autocmd FileType text setlocal textwidth=78

так это стало

"  autocmd FileType text setlocal textwidth=78

,

(Я установил версию vim через homebrew.) Это помогло для всех файлов .txt.

Феликс
источник