首页 > 解决方案 > 根据模式匹配突出显示整行

问题描述

如果屏幕上有匹配项,我正在尝试使用 vim 或 nvim 突出显示整个 gui 行。

我不知道如何开始接近这个或搜索什么。

在此处输入图像描述

我可以根据模式匹配使 vim 高亮,但我希望它像上图所示在屏幕底部(黑色)那样突出显示整个 gui 宽度。

我怎样才能做到这一点?

标签: vimneovim

解决方案


sign据我所知,除了特征之外,不可能突出显示整行。下面的示例使用@/寄存器值来查找最后搜索的行,并将Search在它们上突出显示。

function! s:ToggleHighlightSearchLines()
    if !exists('s:id')
        let s:id = localtime()
        let lc = [line('.'), col('.')]
        call cursor([1, 1])
        let s:sc = &signcolumn
        let &signcolumn = 'no'
        sign define hlsLines linehl=Search
        let s:sp = 0
        while 1
            let ln = search(@/, 'W')
            if ln == 0 | break | endif
            execute 'sign place ' . s:id . ' line=' . ln . ' name=hlsLines'
            let s:sp += 1
        endwhile
        call cursor(lc)
    else
        while 0 < s:sp
            execute 'sign unplace ' . s:id
            let s:sp -= 1
        endwhile
        sign undefine hlsLines
        let &signcolumn = s:sc
        unlet s:id s:sp s:sc
    endif
endfunction
command! ToggleHLSLines call s:ToggleHighlightSearchLines()

推荐阅读