计算 VIM 中突出显示的字符串的长度

计算 VIM 中突出显示的字符串的长度

我想知道是否有办法计算突出显示的符号vim(包括空格)?

更新

VIM 可视化模式

如果我选择多行,它会显示行数。我需要符号计数。

答案1

除非我错过了什么,否则 Vim 已经做到了这一点。如果我使用鼠标或通过键入v和移动光标突出显示某些文本,我会在屏幕底部看到

-- 视觉 -- 12

如果你没有看到这个,请添加set showcmd到你的 .vimrc 以启用它。

右侧的数字是突出显示的字符数。这仅在选择一行时有效,否则会显示行数。

您还可以直观地选择某些文本区域并输入内容g Ctrl-G,将显示所选的行数、字数和字节数。

答案2

Vim 会根据您可视化的内容和方式在显示可视化文本的字符数和行数之间切换(vim 7.4 修补至 2015 年 9 月)

V will display line count
v$ will display character count

如果您可视化多行,则仅显示行数

g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line

答案3

我从您的屏幕截图中看到您正在 Windows 中运行,因此这个答案可能对您没有太大帮助。但对于其他人来说...

Vim 的一个未得到充分利用(在我看来)的功能是让外部命令完成繁重的工作。

对于这种情况,如果您使用的是类 UNIX 系统,则可以使用该wc命令来执行此操作。

最简单的方法是用命令的输出替换选定的文本,方法是键入(选定文本):

:!wc

(然后按回车键)。

这将在您的命令行中显示为:

'<,'>!wc

阅读完信息后,您可以撤消并u返回到开始的地方。

注意:此处理是在整行仅。如果您想要部分线条,我认为@garyjohng_CTRL-G是您的最佳选择。

您可以通过运行以下命令来避免撤消:

:w !wc

这会将选定的行“写入”命令的标准输入,命令的输出将显示在新的临时缓冲区中,而原始内容保持不变。请参阅:help :write_c以了解更多信息。

注:我:write_c从以下来源获得信息:https://stackoverflow.com/questions/1237780/vim-execute-shell-command-without-filtering

现在,更一般地来说:

这个例子wc非常简单,但你可以想象这是一种多么强大的方法。UNIX 已经有很多可用的文本处理命令,你可以在 Vim 中轻松使用它们,而无需接触 Vimscript(耶)。

此外,您编写的任何处理 stdin/stdout 的命令行程序现在不仅可以在您的终端上受益,还可以在 Vim 内部受益。

例如,我发现自己在 vim 内部运行tidy并使json-format我正在查看的文件更具可读性。

您可以在 Windows 上执行相同操作,但 Windows 没有内置如此丰富的命令集。您可以随时安装操作系统或类似方式来获得这些好处。

答案4

对于 vimscript 中的编程方式,当选择范围限制在一行内时,这对我有用:

let amount = virtcol("'>") - virtcol("'<")

(使用virtcol(..)而不是col(..),以便它在:set ve=all活动时按预期工作。)

相关内容