我试图在屏幕右侧显示行数,而不是在左侧与其他文本相邻。这可能吗?我当前的.vimrc foldtext函数连接前两行并保持当前缩进,然后是一些破折号,然后是行数:
function! MyFoldText()
let line = getline(v:foldstart)
let line2 = getline(v:foldstart + 1)
let sub = substitute(line . "|" . line2, '/\*\|\*/\|{{{\d\=', '', 'g')
let ind = indent(v:foldstart)
let lines = v:foldend-v:foldstart + 1
let i = 0
let spaces = ''
while i < (ind - ind/4)
let spaces .= ' '
let i = i+1
endwhile
return spaces . sub . ' --------(' . lines . ' lines)'
endfunction
所以,使用'|'作为屏幕边缘,而不是
| line1 | line2 --------(5 lines)-----------------|
foldtext就像这样
| line1 | line2 -------------------------(5 lines)|
附:
获得一些额外的修复也很好,例如拉动当前的tabstop设置而不是将其硬编码为4,并让它显示下一个实际代码(跳过注释,空格,括号等),而不仅仅是连接前两行。
答案 0 :(得分:2)
下面这行就是我使用的,有点适合您的代码。您需要将偏移量设置为适合您情况的某个值;我想你可能希望偏移大约8或9:
let offset = 8
return spaces . sub . repeat('-', winwidth(0)-strlen(spaces . sub) - offset) . '('. lines .')'
答案 1 :(得分:1)
这是一个来自EightHeader插件帮助的示例,它完全符合您的要求:
如果您不喜欢默认的'foldtext',可以通过设置为自定义它
EightHeaderFolds()
。
例如,默认情况下,关闭的折叠看起来像这样:
```+-- 45 lines: Fold level one
+--- 67 lines: Fold level two
如果您想将其更改为此类:
Fold level one................45 lines
Fold level two..............67 lines
...然后你可以使用这个功能:
let &foldtext = "EightHeaderFolds( '\\=s:fullwidth-2', 'left', [ repeat( ' ', v:foldlevel - 1 ), '.', '' ], '\\= s:foldlines . \" lines\"', '' )"