首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vim statusline中显示字符串的实例数

如何在vim statusline中显示字符串的实例数
EN

Stack Overflow用户
提问于 2021-02-04 18:00:17
回答 1查看 34关注 0票数 0

不久前,我需要在.vimrc中找到一个函数,以显示当前缓冲区中是否存在" TODO ",并在statusline中显示TD。这是一项功能:

代码语言:javascript
复制
...
hi If_TODO_COLOR ctermbg=0 ctermfg=175 cterm=bold
set statusline+=%#If_TODO_COLOR#%{If_TODO()}
...

function! If_TODO()
    let todos = join(getline(1, '$'), "\n")
    if todos =~? " TODO "
        return " TD "
    else
        return ""
    endif
endfunction

我的问题是如何修改函数以返回字符串在缓冲区中出现了多少次,比如、TD (6)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-04 20:10:22

您可以:help filter()这些行以获得包含TODO的行列表。

代码语言:javascript
复制
let lines = getline(1, '$')
let todos = filter(lines, 'v:val =~? " TODO "')
return len(todos) > 0 ? 'TD' : ''

同样的事情,用一种稍微“现代”的方式来表达:

代码语言:javascript
复制
return getline(1, '$')
    \ ->filter('v:val =~? " TODO "')
    \ ->len() > 0 ? 'TD' : ''

:help method

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66051261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档