vim - 将命令行的输出写入vim中的文件

标签 vim macros replace

我想在每一行的末尾插入该行的字母字符数。在一条线上做到这一点很容易。我使用 :s/\a//gn 搜索并在命令行中获取字母字符的出现,然后是 A 和空格并输入数字。

当我有太多的行时,我的问题就出现了,这样做变得非常乏味。我正在尝试创建一个宏,但很难将命令行输出输入其中。有没有办法在不诉诸 *nix 命令的情况下做到这一点?我可以访问 *nix 框,但不是所有时间。

如果我的文件有以下内容:

abc2d4s
jd4a5ag
jdf7fjf
abdd5ff

我希望输出看起来像这样:

abc2d4s 5
jd4a5ag 5
jdf7fjf 6
abdd5ff 6

我在想是否有办法以某种方式将替换输出通过管道传输到寄存器中,但不知道该怎么做,但也许有更好的方法。

最佳答案

您可以使用 :redir 捕获 :s///gn 命令的输出,但在这种情况下,我宁愿通过 实现计数substitute():help sub-replace-expression:

:%s/.*/\=submatch(0) . ' ' . len(substitute(submatch(0), '\A', '', 'g'))/

这匹配整行 (.*),然后删除所有非字母字符 (\A),并附加结果的长度。注意:仅适用于 ASCII 字符(但无论如何 \a 仅涵盖这些字符)!

关于vim - 将命令行的输出写入vim中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24327203/

相关文章:

vim - 在 vim 中保存文件导致窗口为空

git - 在 fugitive.vim 冲突差异中显示基础

c - 如何创建 "C single-line comment"宏

python - 如何替换元组列表中的某些字符

javascript - JavaScript 函数中的正则表达式问题 - 不替换任何内容

powershell - 在文本编辑器中打开所有搜索结果

c++ - 多重继承的可变参数宏

macros - 创建除某些特定变量之外的所有变量的列表

javascript - 为bracket.js制作一个插入函数

vim - 使用 vim 的 :make command 中的最后一个参数