微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

有没有办法获得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中的缓冲区从零开始编号,而不是一个.

原文地址:https://www.jb51.cc/vim/384376.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐