加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

有没有办法在Vim脚本中获取缓冲区的行数?

发布时间:2020-12-16 01:20:18 所属栏目:安全 来源:网络整理
导读:有没有办法获得Vim缓冲区中的行数,不一定是当前的行数? 使用行(‘$’)可以获得当前缓冲区的最后一行的编号,从而获得行数.使用getbufline({expr},1,’$’),可以获得{expr}给出的缓冲区的行字符串列表,列表大小为行数. 使用getbufline会产生在内存中复制整个
有没有办法获得Vim缓冲区中的行数,不一定是当前的行数?

使用行(‘$’)可以获得当前缓冲区的最后一行的编号,从而获得行数.使用getbufline({expr},1,’$’),可以获得{expr}给出的缓冲区的行字符串列表,列表大小为行数.

使用getbufline会产生在内存中复制整个文件的开销,只是为了得到它包含的行数. line完成工作,但仅适用于当前缓冲区.

这应该是从脚本完成的,而不是交互式的,并且如果可能的话,使用line(‘$’)的开销最小.

如果 vim是使用 python支持编译的,并且不是旧版本,那么可以使用7.3.569
python import vim
let numlines=pyeval('len(vim.buffers['.({expr}-1).'])')

.对于支持python的旧版本,您可以使用

python import vim
python vim.command('let numlines='+str(len(vim.buffers[int(vim.eval('{expr}'))-1])))

.测试显示,对于11 MiB日志文件,第一个解决方案比len快了209倍(getbufline({expr},’$’))(0.000211 vs 0.044122秒).请注意,vim.buffers中的缓冲区从零开始编号,而不是一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读