Мне нравится, что длинные строки отображаются более чем на одной строке терминала; Мне не нравится, что vim вставляет новые строки в мой текст. Какую часть .vimrc я должен изменить?
Для ясности: вам нравится, что длинные строки отображаются более чем на одной строке терминала; тебе не нравится, что vim вставляет новые строки в твой настоящий текст? Если это так, то :set nowrapэто противоположность того, что вы хотите :(.
Эндрю Айлетт
@ Андрей: да, ваше резюме точно, что я хочу
Хайюань Чжан
Ответы:
304
использование
:set wrap
Визуально переносить строки, то есть строка по-прежнему представляет собой одну строку текста, но Vim отображает ее на нескольких строках.
использование
:set nowrap
Для отображения длинных строк одной строкой (т.е. вы должны прокручивать горизонтально, чтобы увидеть всю строку).
Спасибо за советы, ребята. Я пошел с: set nowrap и: set textwidth = 0 отлично работает
Роберт Белтран
5
Когда я печатаю, я все еще хочу видеть «визуальный» предел в 80 столбцов, и я не хочу, чтобы vim автоматически добавлял перевод строки, когда я печатаю после 80-го столбца. Как мне это сделать?
Оливье Понс
7
Это именно тот ответ, который я искал, но это не ответ на вопрос ОП. Это немного вводит в заблуждение, чтобы это было лучшим ответом. Я не знаю, как исправить эту ситуацию. Я бы просто отредактировал ваш ответ, чтобы также ответить на оригинальный вопрос. Но уже есть правильный ответ, за который проголосовали почти так же. Так что я просто проголосовал за переключение двух ответов.
Даниэль Дарабос
3
Это именно тот ответ, который я не искал, и это не ответ на вопрос ОП.
peeol
Это не ответ на вопрос.
194
Мне нравится, что длинные строки отображаются более чем на одной терминальной линии
Этот вид визуального / виртуального переноса строк включается с помощью wrapопции окна:
set wrap
Мне не нравится, что vim вставляет новые строки в мой текст.
Чтобы отключить перенос физической строки, очистите оба параметра: textwidthи wrapmarginпараметры буфера:
Спасибо! set textwidth=0 wrapmargin=0работает, но если я вставлю его .vimrc, это не будет иметь эффекта, например, для простых текстовых файлов. Как узнать и устранить перезапись?
Qubodup
7
@qubodup Вы можете проверить, что что-то перезаписывает ваши настройки .vimrc, открыв файл, в котором вы видите проблему, и введя ее :verbose set textwidth? wrapmargin?. Это скажет вам их текущие значения, а также, где они были установлены. Возможно, у вас есть плагин, который переопределяет их. В этом случае вы можете либо удалить этот плагин, либо попытаться переопределить настройку плагина позже в вашем пути выполнения (например:) ~/.vim/afterили с помощью вашей собственной автокоманды. Правильный подход будет зависеть от того, где / как он сбрасывается.
Лоуренс Гонсалвес
set wrapи set linebreakэто то, что сделал это для меня.
Илья Чоли
36
Я не уверен, что полностью понимаю, но вы, возможно, ищете параметр конфигурации 'formatoptions'. Попробуйте что-то вроде :set formatoptions-=t. tВариант будет вставить разрывы строк , чтобы сделать обтекание текстом в ширину набора по textwidth. Вы также можете поместить эту команду в свой .vimrc, просто удалите двоеточие ( :).
Мне кажется, это лучший вариант для удовлетворения желания ОП. Мне нравится тот факт, что vim по-прежнему показывает вертикальную линию в tw.
Митч
3
Это единственный ответ, фактически касающийся вопроса ОП. Большинство других делают обратное. OP по-прежнему хочет, чтобы длинные строки отображались как обернутые, но vim не вставляет разрывы строк автоматически.
За исключением того, что он делает противоположное тому, что ОП определяет как разыскиваемое поведение ...: P
Морлок
5
@ Морок, но отвечает на вопрос, который у меня был, и гугл привел меня сюда :)
Бен Усман
есть ли сочетание клавиш для этого?
Пини Чейни
@PiniCheyni, добавьте в свой файл .vimrc: nnoremap <Cw>: установите invwrap <CR> Затем вы можете использовать Ctrl + W для переключения переноса текста.
Reas0n
30
:set tw=0
VIM не будет автоматически вставлять разрывы строк, но сохранит перенос строк.
Я хочу с точностью до наоборот ... когда я печатаю, я все еще хочу видеть "визуальный" предел в 80 столбцов, и я не хочу, чтобы vim автоматически добавлял перевод строки, когда я печатаю после 80-го столбца. Как мне это сделать?
Оливье Понс
16
Вы можете найти 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
Настоятельно рекомендуется избегать сокращенных вариантов, потому что в будущем вам придется выполнить поиск в справочной системе, чтобы понять, что вы установили, поэтому используйте set nolinebreakвместоset lbr
SergioAraujo
12
set formatoptions-=t Сохраняет визуальную ширину текста, но не добавляет новую строку в режиме вставки.
Странно, что для такой простой настройки потребуется такое количество «фокус-покуса».
Чтобы ответить на ваш вопрос сейчас, мне показалось, что он работает с сочетанием следующего:
:set wrap linebreak nolist
(это, кажется, предотвращает разрыв существующих строк, просто перенос.)
И
set formatoptions=l
(это предотвращает разрыв новых / отредактированных строк, в то время как + = не делает этого для меня, так как другие настройки / плагины, кажется, находят место и добавляют свои собственные опции, которые переопределяют мою.)
Если, как и я, вы используете gVim в Windows, то ваш файл .vimrc может быть источником другого «примера» файла Vimscript, который автоматически устанавливает textwidth(в моем случае 78) текстовые файлы.
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 .
Вместо того, чтобы редактировать файл vimrc_example.vim, я просто добавил autocmd FileType text setlocal textwidth=0файл vimrc, и это устранило проблему, когда другие предложенные решения этого не сделали.
Гранд-адмирал
3
Это правильно, что установить сейчас позволит вам вставить длинную строку без добавления новых строк в vi / vim, но тогда строка не будет визуально перенесена для удобства чтения. Вместо этого вам нужно прокрутить только одну длинную строку.
Чтобы визуально переносить строку, но не вставлять в нее символы новой строки, установите перенос (который, вероятно, по умолчанию не требуется) и установите textwidth = 0 .
В некоторых системах значение textwidth = 0 установлено по умолчанию. Если вы не находите, что это так, добавьте set textwidth = 0 в ваш файл .exrc, чтобы он стал вашим пользователем по умолчанию для всех сеансов vi / vim.
:set nowrap
это противоположность того, что вы хотите :(.Ответы:
использование
Визуально переносить строки, то есть строка по-прежнему представляет собой одну строку текста, но Vim отображает ее на нескольких строках.
использование
Для отображения длинных строк одной строкой (т.е. вы должны прокручивать горизонтально, чтобы увидеть всю строку).
источник
Этот вид визуального / виртуального переноса строк включается с помощью
wrap
опции окна:Чтобы отключить перенос физической строки, очистите оба параметра:
textwidth
иwrapmargin
параметры буфера:источник
set textwidth=0 wrapmargin=0
работает, но если я вставлю его.vimrc
, это не будет иметь эффекта, например, для простых текстовых файлов. Как узнать и устранить перезапись?:verbose set textwidth? wrapmargin?
. Это скажет вам их текущие значения, а также, где они были установлены. Возможно, у вас есть плагин, который переопределяет их. В этом случае вы можете либо удалить этот плагин, либо попытаться переопределить настройку плагина позже в вашем пути выполнения (например:)~/.vim/after
или с помощью вашей собственной автокоманды. Правильный подход будет зависеть от того, где / как он сбрасывается.set wrap
иset linebreak
это то, что сделал это для меня.Я не уверен, что полностью понимаю, но вы, возможно, ищете параметр конфигурации 'formatoptions'. Попробуйте что-то вроде
:set formatoptions-=t
.t
Вариант будет вставить разрывы строк , чтобы сделать обтекание текстом в ширину набора поtextwidth
. Вы также можете поместить эту команду в свой.vimrc
, просто удалите двоеточие (:
).источник
tw
.Используйте
:set nowrap
.. работает как шарм!источник
:set tw=0
VIM не будет автоматически вставлять разрывы строк, но сохранит перенос строк.
источник
Вы можете найти
set lbr
полезным; сset wrap
этим будет обтекание, но только разрезание строки в пробеле, а не в середине слова.например
и
источник
set nolinebreak
вместоset lbr
set formatoptions-=t
Сохраняет визуальную ширину текста, но не добавляет новую строку в режиме вставки.источник
Странно, что для такой простой настройки потребуется такое количество «фокус-покуса».
Чтобы ответить на ваш вопрос сейчас, мне показалось, что он работает с сочетанием следующего:
(это, кажется, предотвращает разрыв существующих строк, просто перенос.)
И
(это предотвращает разрыв новых / отредактированных строк, в то время как + = не делает этого для меня, так как другие настройки / плагины, кажется, находят место и добавляют свои собственные опции, которые переопределяют мою.)
источник
Если, как и я, вы используете gVim в Windows, то ваш файл .vimrc может быть источником другого «примера» файла Vimscript, который автоматически устанавливает
textwidth
(в моем случае78
) текстовые файлы.Мой ответ на такой же вопрос, как и этот, - Как остановить перенос текста gVim в столбце 80 - на сайте Vi и Vim Stack Exchange :
источник
autocmd FileType text setlocal textwidth=0
файл vimrc, и это устранило проблему, когда другие предложенные решения этого не сделали.Это правильно, что установить сейчас позволит вам вставить длинную строку без добавления новых строк в vi / vim, но тогда строка не будет визуально перенесена для удобства чтения. Вместо этого вам нужно прокрутить только одну длинную строку.
Чтобы визуально переносить строку, но не вставлять в нее символы новой строки, установите перенос (который, вероятно, по умолчанию не требуется) и установите textwidth = 0 .
В некоторых системах значение textwidth = 0 установлено по умолчанию. Если вы не находите, что это так, добавьте set textwidth = 0 в ваш файл .exrc, чтобы он стал вашим пользователем по умолчанию для всех сеансов vi / vim.
источник