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

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...