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

如何为vim-airline插件添加当前高亮选中字符的计数功能?

实现vim-airline状态栏显示选中字符计数

vim-airline本身没有默认提供选中字符/内容的计数配置项,但可以通过自定义函数+airline的扩展段功能来实现,直接把以下配置添加到你的.vimrc文件中:

" 定义获取选中内容计数的函数
function! AirlineSelectedCount()
  if mode() =~# '[vV]'
    let l:start = getpos("'<")
    let l:end = getpos("'>")
    if mode() ==# 'v' " 字符可视化模式
      let l:count = l:end[2] - l:start[2] + 1
      if l:end[1] > l:start[1]
        let l:count += (l:end[1] - l:start[1]) * (&columns)
      endif
    elseif mode() ==# 'V' " 行可视化模式
      let l:count = l:end[1] - l:start[1] + 1
    else " 块可视化模式
      let l:count = (l:end[1] - l:start[1] + 1) * (l:end[2] - l:start[2] + 1)
    endif
    return ' 选: ' . l:count . ' '
  else
    return ''
  endif
endfunction

" 将自定义函数注册为airline的扩展段
call airline#parts#define_function('selected_count', 'AirlineSelectedCount')

" 配置扩展段的显示位置(这里放在状态栏右侧,可根据需求调整)
let g:airline_section_z = airline#section#create_right(['selected_count', 'linenr', 'colnr', 'percent'])

" 设置自动更新事件,确保选中内容变化时状态栏实时刷新
autocmd CursorMoved,CursorMovedI,ModeChanged * call airline#update_statusline()

配置说明:

  • 函数AirlineSelectedCount会根据当前的可视化模式(字符/行/块)计算对应的选中数量,非可视化模式下返回空字符串,不占用状态栏空间。
  • 通过airline#parts#define_function把自定义函数注册成airline可识别的组件。
  • g:airline_section_z配置的是状态栏右侧的内容,你可以根据自己的需求把selected_count放到其他section(比如左侧的g:airline_section_a/b等),或者调整和其他组件的顺序。
  • 最后的autocmd确保光标移动、模式切换时,状态栏会自动更新计数。

如果需要修改计数的显示样式,比如把' 选: '改成你喜欢的符号风格,直接修改函数里的返回字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:52:46