Чому я не можу зупинити vim від обгортання коду?


115

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

Я можу натиснути, Jщоб об’єднати розбиті рядки коду, тому, здається, вставляється справжня повернення каретки. Я просто не розумію, чому і як це зупинити.


15
:set nowrapлише перешкоджає загортанню відображення рядків, а не вставляти рядкові рядки.
чемпіон

Відповіді:


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/…
Ain Tohvri

2
Якщо tw і wp все ще не вирішує проблему, подивіться на цю публікацію на SU, яка допомогла мені вирішити мою проблему: superuser.com/questions/250112/…
Alien_SM

3
Видаляючи filetype plugin onз моїх .vimrc, це зробили для мене.

1
З цією відповіддю ви не можете скористати gqабзац вручну по ширині тексту. @ Інженер повинен бути правильним.
Ділантхепігуй

86

Жодна з інших відповідей для мене не працювала (IDK чому).

:set wrap! Зробив трюк для мене (використовуючи GVim для Windows).


8
Це вирішує дещо іншу проблему. wrapзабезпечує появу лінії упаковки, але не на самому ділі розбити текст на нові рядки. Ви, ймовірно, wrapувімкнули, тому :set wrap!вимкнули його. Ви можете перевірити, з чим :set wrap?буде відповідати поточне значення (тобто wrapабо nowrap).
shadowtalker

1
Це рішення працює для мене на Mac OsX. Vim версія 7.4
Shnkc

Це працювало для мене, я змінив textwidthі по- wrapmarginперше, але це фактично змусило vim оновлюватись і повторюватись без будь-яких обернутих рядків.
Креднс

Дін Дін Дін! Працює в неовімі
Gjaa

Який чарівний момент, коли ви дізнаєтесь, що команда, яка вам справді потрібна, така виразна і проста. Дякуємо devs
Capitan Empanada

57

set formatoptions-=tповинен зробити трюк. set formatoptions+=tповерне автоматичне обгортання.

Для отримання додаткової інформації про те, що можна зробити formatoptions, дивіться документи .


2
Дякую! Ваше рішення - єдине, що працювало на мене. Коли я переходжу в режим вставки, vim більше не вставляє нові рядки.
Геремія

2
Так. Це справжнє рішення.
Russ Bateman

16

Для запобігання загортанню довгих рядків vim я використовую ці два рядки в моїх .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing

12

Щоб вимкнути обгортання рядків, ви можете ввести :set wrap!або додати цю команду до своєї ~/.vimrc.


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.