在vim编辑的文件中,如何使用vim命令获取最长行中的字符数?
行号?
答案 0 :(得分:2)
这将打印行号,长度和行:
:%!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
答案 1 :(得分:2)
使用某些Unix工具(如wc
和awk
)可能更简单,更短(并且其他答案/评论似乎适合他们),因此这是一个纯粹的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, ', '))
它将所有行转换为其长度的List,然后找到最大值。然后过滤具有该值的所有列表条目并将其转换为其行号(=列表索引+ 1)。最后,打印结果。