2

В VIM я хотел бы изменить поведение сворачивания. Предположим, я сложил этот блок:

=== fileName ===

        == summary ==

                I think that this defines the class to use for the authentication
                and the parameters to pass the class.

        == tags ==

                <bla bla>
                </bla bla>

Это становится:

=== fileName ===

        == summary ==

+---  2 lines: I think that this defines the class to use for the authentication------------

        == tags ==

                <bla bla>
                </bla bla>

Я думаю, что было бы легче читать, если бы это стало:

=== fileName ===

        == summary ==

                +---  2 lines: I think that this defines the class to use for the authentication------------

        == tags ==

                <bla bla>
                </bla bla>

(Желаемый результат имеет дополнительную вкладку)

К вашему сведению: у меня есть это в моем vimrc:

"use indents as the folding method
set foldmethod=indent

"make vim save and load the folding of the document each time it loads
au BufWinLeave * mkview
au BufWinEnter * silent loadview

Обновить

По рекомендации от njd я попытался установить foldtext для своей собственной функции. Я попробовал и тот, который он предложил, и тот, что ниже. Однако ни один не имел никакого эффекта.

function! MyFoldText()
  return 'johnny'
endfunction

set foldtext=MyFoldText()

Что мне здесь не хватает?

Примечание: у меня также есть это: set foldmethod=indent в моем .vimrc.

1 ответ1

2

Итак, вы хотите, чтобы строка сгиба сообщения соответствовала отступу сложенного текста?

Вам нужно установить опцию foldtext нечто иное , чем функции по умолчанию foldtext().

Что-то вроде этого:

function! MyFoldText()
  let lines = 1 + v:foldend - v:foldstart
  let spaces = repeat(' ', indent(v:foldstart))

  let linestxt = 'lines'
  if lines == 1
    linestxt = 'line'
  endif

  let firstline = getline(v:foldstart)
  let line = firstline[ind : ind+80]

  return spaces . '+' . v:folddashes . ' ' . lines . ' ' . linestxt . ': ' . line . ' '
endfunction

затем

:set foldtext=MyFoldText()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .