![如何在 Vim/gVim 中找到列数/字符数最多的行?](https://linux22.com/image/1267980/%E5%A6%82%E4%BD%95%E5%9C%A8%20Vim%2FgVim%20%E4%B8%AD%E6%89%BE%E5%88%B0%E5%88%97%E6%95%B0%2F%E5%AD%97%E7%AC%A6%E6%95%B0%E6%9C%80%E5%A4%9A%E7%9A%84%E8%A1%8C%EF%BC%9F.png)
我目前正在 Windows XP 上使用 gVim,对于我的核心问题有 2 个后续问题:
找到字符最多的行的最佳方法是什么?
我现在的方法:我使用正则表达式搜索:/^\(\p\)\{#number#,}$
),并不断增加整数,#number#
直到得到一个匹配项。就我的文件而言,它只有一行 81K 个字符 - 而不是我之前认为的 916,657 个字符。我知道这一点,因为当光标在该行上时,我按下g + Ctrl+g
并得到 81K 的列数。
后续1)该问题"What is the best method of finding the line with the most columns?"
与上面的第 2 点相同吗?
后续2)当我打开一个文件并在屏幕底部看到以下行时,第二个数字是什么意思:
我将其解释为该文件有 14,871 行,并且至少有一行有 916,657 列。我检查了该文件确实有 14,871 行,但我无法理解第二行(916K)的用途。
答案1
答案2
肯定有更好的方法,但以下方法也可以:
%s/./a/g "Replace everything with 'a's
sort! "Sort by column length
ggy$ "Go to first line (longest) and copy it
u "Undo the sorting
/<c-r>" "Search for the longest line
mm "Mark it 'm'
u "Undo the replace
'm "Go to the mark - there!
答案3
无法回答第一个问题,但是文件加载消息中的第二个数字是文件中的字符总数。
答案4
不是以 vim 为中心,与其他答案类似,但对某些人来说可能更直观。这假设您可以从 vim 中调用一些外部程序。
我的文件中有以下内容test_file
:
hello world
helloooooooooooooo world !!!
yo, world!
helloooOoooOooooOo World ! !
该wc
命令有时有一个-L
选项,可以打印最长行的大小。28 test_file
这是我的示例的输出。
您可以使用 打印这 28 个字符的行(及其行号)grep -nP ".{28}" test_file
。
2:helloooooooooooooo world !!!
4:helloooOoooOooooOo World ! !
你可以wc
用 来解析输出cut
。把它们放在一起,并将一个命令粘贴到另一个命令中,结果是:
grep -nP ".{$(wc -L test_file | cut -f 1 -d ' ')}" test_file