перенос строки vim с отступом

Vim / gvim обернет длинные строки следующим образом:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

есть ли способ заставить Vim обернуть эти строки так:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Я хочу, чтобы обернутая линия начиналась немного дальше отступа от начала этой линии. (Чтобы быть ясным, я говорю о wrap, а не textwidth.)

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

9
задан retracile
01.03.2023 18:18 Количество просмотров материала 3273
Распечатать страницу

5 ответов

обновление: эта функция приземлился в vim 7.4.338, хотя вы захотите 7.4.354 или позже.


видимо это требует патч Vim. Существует патч Вацлавом Smilauer из прошлого 2007 года. I обновил патч для работы с Vim 7.2.148 из Fedora 11. Но, похоже, это делает свою работу.

17
отвечен retracile 2023-03-03 02:06

в свой .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

или :set showbreak=-----> в любой сессии.

для справки, мой исследовательский след (Vim 6.2)::help 'wrap' ->:help 'linebreak' -> ( :help 'showbreak' ->:help 'cpoptions',:help 'breakat')

13
отвечен Chris Johnsen 2023-03-03 04:23

не идеальный ответ, который вы ищете, но вот что я делаю, чтобы обойти отсутствие правильного отступа vim.

во-первых, загрузитеотступ руководство (опционально), так как он лучше указывает, на каком уровне отступа вы находитесь, даже до такой степени, что вы можете установить ширину табуляции, чтобы быть только 2 пробелы!

во-вторых, сопоставьте комбинацию клавиш для переключения перенос по словам. У меня есть мой набор "r" для "wrap" ("w" для сохранения), как so

:noremap <leader>r :set nowrap! <CR>

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

0
отвечен puk 2023-03-03 06:40

неправильный "обходной путь", который я в настоящее время использую, должен иметь фиксированный, но большой отступ в префиксе. Это выглядит хорошо, пока этот фиксированный отступ больше, чем отступ обернутой линии, что происходит большую часть времени.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
0
отвечен Aaron Thoma 2023-03-03 08:57

решение вашего вопроса может быть достигнуто установкой двух параметров в vimrc:

для разрыва строк с тем же отступом: set breakindent

и один космос для делать отступы мягк-обернутые линии: let &showbreak=' '

это будет работать так:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |
0
отвечен aturegano 2023-03-03 11:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх