gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:12:35 26 4
gpt4 key购买 nike

有没有办法只获取 Vim 缓冲区中的行数,而不一定是当前的行数?

line('$')可以得到当前缓冲区的最后一行的编号,即行数。与 getbufline({expr}, 1 , '$')可以得到由 {expr} 给出的缓冲区的行串列表。 ,列表大小就是行数。

使用 getbufline有在内存中复制整个文件的开销,只是为了获取它包含的行数。 line完成这项工作,但仅适用于当前缓冲区。

这应该从脚本中完成,而不是交互方式,而且开销最小,就像 line('$') 一样。如果可能的话。

最佳答案

如果 vim 是使用 python 支持编译的并且不旧,则可以使用 7.3.569

python import vim
let numlines=pyeval('len(vim.buffers['.({expr}-1).'])')

.使用带有 python 支持的旧 vim,您可以使用
python import vim
python vim.command('let numlines='+str(len(vim.buffers[int(vim.eval('{expr}'))-1])))

.测试表明,对于 11 MiB 日志文件,第一个解决方案比 len(getbufline({expr}, 1, '$')) 快 209 倍(0.000211 对 0.044122 秒)。请注意 vim.buffers 中的缓冲区索引从零开始,而不是从一开始。

关于vim - 有没有办法在 Vim 脚本中获取缓冲区的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com