我喜欢为我经常光顾的编程论坛编写教程和文章。本论坛每个帖子有字数限制。我过去曾使用 Notepad++ 来写帖子,它会在状态栏中保留实时字符数。我开始更多地使用 gVim,此时我真的不想回到 Notepad++,但是拥有这个字符数非常有用。如果我仔细计算,我通常最终会将帖子粘贴到 Notepad++ 中,这样我就可以看到我何时修剪到足以达到限制。
我见过有:set ruler
帮助的建议,但这仅通过当前行的当前列索引给出字符数。如果我不使用分段符,这会很棒,但我相信您会同意在一个段落中阅读数千个字符是不舒服的。
我阅读了帮助并认为这rulerformat
会起作用,但是在查看statusline
它使用的格式后,我没有看到任何提供当前缓冲区字符数的内容。
我已经看到有一些插件添加了这个,但我仍然把我的脚趾浸入 gVim 并且我不确定在我理解它们做什么之前我想加载随机插件。我更喜欢使用 vim 内置的东西,但如果它不存在,它就不存在。
我应该怎么做才能实现我的目标?如果它涉及插件,您是否使用它以及它的效果如何?
mru*_*cci 150
g CTRL-G
在正常模式下按可显示有关光标和文件的一些统计信息。
如果您使用的是 linux,则可以使用它wc -m
来获取当前文件中的字符数
:!wc -m %
Run Code Online (Sandbox Code Playgroud)
由于它不是实时更新的,也许您想将此命令映射到以下内容:
map <F4> :!wc -m %<CR>
Run Code Online (Sandbox Code Playgroud)
aki*_*ira 26
:help count-items
Run Code Online (Sandbox Code Playgroud)
建议,你可以做一个替换 ala 的试运行
:%s/./&/gn
Run Code Online (Sandbox Code Playgroud)
(然后报告匹配字符的数量)或者您strlen()
对视觉选择的文本进行了观察:
:echo strlen(@")
Run Code Online (Sandbox Code Playgroud)
(" 是未命名的寄存器)
因为您可以在状态行中调用这样的表达式,%{myfunc()}
这可能是一个很好的起点。一直计算可能会有点耗时,因为您必须选择整个文本然后猛拉它,但也许在“-register 中显示字节数对您来说已经可以了。如果您真的想知道数字缓冲区中的字符数:只需在视觉上选择缓冲区中的所有文本并猛拉它。因此,解决方案是:
:set statusline=%{strlen(@")}
Run Code Online (Sandbox Code Playgroud)
它为您提供“-寄存器中的字符数(如果您选择并拉动当前缓冲区,则与字节数相同)。
小智 9
对 mrucci 答案的增强:
您可以wc
在 linux 上使用,而无需先保存文件,通过:w
如下指示命令输出:
:w !wc -m
Run Code Online (Sandbox Code Playgroud)
您可以将其映射到 mrucci 提到的内容。
:help statusline
Run Code Online (Sandbox Code Playgroud)
给你
o N Byte number in file of byte under cursor, first byte is 1.
Mnemonic: Offset from start of file (with one added)
Run Code Online (Sandbox Code Playgroud)
这也是解决您问题的好方法。只需转到缓冲区的末尾,G状态行中显示的字节数就是字符数(当然,多字节字符不是这样)。回到你来自的地方ctrlo。
归档时间: |
|
查看次数: |
78345 次 |
最近记录: |