You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vim中如何一键高亮当前行,直至行不可见或再次按键取消?

哈哈,这个需求我之前也折腾过!给你两种纯Vim原生的实现方案,不用装任何插件,按需选:

方法一:快速临时高亮(无切换)

如果你只需要快速高亮当前行,不需要切换开关,直接在~/.vimrc(Neovim用户是~/.config/nvim/init.vim)里加一行映射就行,比如用<F5>当触发键(换成你顺手的键都可以,比如<Leader>h):

nnoremap <F5> :call matchadd('Search', '\%' . line('.') . 'l', 10)<CR>

简单解释:

  • matchadd('Search', pattern, priority):调用Vim的内置高亮匹配功能,用Search组(就是你平时搜索时的高亮样式)来标记目标行
  • \%line('.')l:这是Vim正则的行匹配语法,line('.')会获取当前光标所在的行号,组合起来就是精准匹配当前行
  • 优先级设为10是为了避免被其他低优先级的高亮覆盖

⚠️ 小提醒:这个方法每次按都会叠加一个高亮,如果多次按同一行,高亮会重复,适合临时快速用。

方法二:带开关+自动取消的智能高亮

如果想要按一次高亮、再按一次取消,还能在行滚出屏幕/切换窗口时自动取消高亮,就用这个带自定义函数的方案:

  1. 先在配置文件里定义全局变量和函数:
" 存储当前高亮的ID,初始为0(0表示无高亮)
let g:current_line_highlight_id = 0

function! ToggleCurrentLineHighlight()
    " 如果已有高亮,先取消它
    if g:current_line_highlight_id != 0
        call matchdelete(g:current_line_highlight_id)
        let g:current_line_highlight_id = 0
    else
        " 给当前行添加高亮,用Search组,优先级10
        let g:current_line_highlight_id = matchadd('Search', '\%' . line('.') . 'l', 10)
        " 设置自动取消的规则:离开缓冲区/窗口时取消
        autocmd BufLeave,BufWinLeave,WinLeave * call matchdelete(g:current_line_highlight_id) | let g:current_line_highlight_id = 0
        " 光标移到其他行时,自动取消原行的高亮
        autocmd CursorMoved * if line('.') != matchstr(getmatchpos(g:current_line_highlight_id)[1], '\d\+') | call matchdelete(g:current_line_highlight_id) | let g:current_line_highlight_id = 0 | endif
    endif
endfunction
  1. 再添加触发映射:
nnoremap <F5> :call ToggleCurrentLineHighlight()<CR>

逻辑说明:

  • 用全局变量g:current_line_highlight_id追踪当前高亮的唯一ID,方便后续精准删除
  • 第一次按<F5>:给当前行加上高亮,同时绑定自动命令,确保你切换窗口、离开文件或者光标移走时,高亮自动消失
  • 第二次按<F5>:如果当前有高亮,就立刻删除它,重置状态
可选:自定义高亮样式

要是默认的Search高亮不符合你的审美,可以自己定义一个高亮组:

" 终端和GUI模式分别设置背景色,按需调整
hi MyCurrentLine ctermbg=darkblue guibg=#335577

然后把函数里的'Search'替换成'MyCurrentLine'就行,高亮样式就变成你自定义的啦!

内容的提问来源于stack exchange,提问作者bndfcom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:08:51