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

前端之家收集整理的这篇文章主要介绍了有没有办法在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中的缓冲区从零开始编号,而不是一个.

猜你在找的Bash相关文章