Vim: при сворачивании кода оставляйте вкладки
В 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 ответ
Решение
Итак, вы хотите, чтобы строка сгиба сообщения соответствовала отступу сложенного текста?
Вам нужно установить 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()