繁体   English   中英

如何使用vim命令获取最长行中的列数?

[英]How to get the number of column in the longest line with vim command?

在用vim编辑的文件中,如何使用vim命令获取最长行中的字符数?
和行号?

这将打印行号,长度和行:

:%!awk ' { if ( length > L ) { L=length ;s=$0 } }END{ print NR, L, "\""s"\"" }'

http://www.unixcl.com/2009/04/find-length-of-longest-line-awk-bash.html

使用wcawk类的Unix工具可能更容易,更短(其他答案/注释似乎很适合他们),因此这里是一个纯Vimscript解决方案:

let widths = map(getline(1, '$'), 'strdisplaywidth(v:val)')
let maxWidth = max(widths)
let longestLines = filter(map(copy(widths), 'v:val == maxWidth ? (v:key + 1) : ""'), '! empty(v:val)')
echo printf('max width is %d, found in line(s) %s', maxWidth, join(longestLines, ', '))

它将所有行转换为它们的长度列表,然后找到最大值。 然后将所有具有该值的列表条目过滤并转换为它们的行号(=列表索引+ 1)。 最后,打印结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM