обертання лінії vim з відступом


20

Vim / gvim буде обертати довгі рядки так:

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

Чи є спосіб змусити Vim обернути такі рядки замість цього:

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

Я хочу, щоб загорнута лінія починала трохи повз відступ, звідки починався цей рядок. (Просто для того, щоб було зрозуміло, я говорю про обгортання, а не про ширину тексту.)

Я хочу, щоб відступ рядка було враховано при обгортанні цього рядка, щоб структура коду не була прихована обернутими рядками.

Відповіді:


17

ОНОВЛЕННЯ: Ця функціональність приземлена у vim 7.4.338, хоча вам потрібно 7.4.354 або пізнішої версії .


Отже, мабуть, для цього потрібна виправлення Vim . Є патч Вацлава Смілауера ще з 2007 року. Я оновив патч для роботи з Vim 7.2.148 від Fedora 11. Але це, здається, виконує цю роботу.


1
Коли Fedora випускає оновлення до Vim, я оновлюю виправлення. Дивіться retracile.net/wiki/VimBreakIndent за останніми відомостями.
втягнення

Бонус вказує на того, хто може пояснити, як змусити це працювати з MacVim.
пончик

Де патч? Цей сайт не посилається на жодне, що я можу бачити
puk

@puk: На жаль, основне оновлення програмного забезпечення змінило деякі місця посилань. Я зараз це виправив.
втягнення

1
Станом на сьогодні (25 червня 2014 р.) Виправний патч офіційно є частиною Vim 7.4 - додається патчами 338 та 345.
Геппіт,

14

У вашому .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')


Дуже круто, але не дуже, що я мав на увазі. Ви сприйняли це трохи буквальніше, ніж я мав намір, тому моя вина там. Я побачу, чи зможу уточнити.
ретрансляція

1

Вирішення вашого питання може бути досягнуто, встановивши два параметри у вашому vimrc:

Щоб розбити рядки з однаковим відступом: set breakindent

І один простір для відступу м'яких обернутих ліній: let &showbreak=' '

Це працюватиме так:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

Не ідеальна відповідь, яку ви шукаєте, але ось що я роблю, щоб подолати відсутність належного відступу vim.

Спочатку скачайте посібник з відступами Натанаела Кейн (необов’язково), оскільки він краще вказує, на якому рівні відступів ви перебуваєте, навіть до того моменту, коли ви можете встановити ширину табуляції лише 2 пробіли!

По-друге, складіть комбінацію клавіш, щоб переключити обгортання слів. У мене встановлено значення 'r' для 'wrap' ('w' - це для економії)

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

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


0

Неправильне "вирішення", яке я зараз використовую, полягає в тому, що в префіксі є фіксований, але великий відступ. Це добре виглядає, доки цей фіксований відступ більший за відступ загорнутої лінії, що є більшою частиною часу.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.