vim - 将“读取”命令的输出作为Ex模式中的范围进行处理

时间:2012-08-23 20:26:34

标签: vim

背景

在vim(Ex模式)下,可以运行外部命令,并将该命令的输出自动插入当前缓冲区。

在例子001中,我们看到如何cd到当前目录,获取那里的文件列表并自动将其插入当前缓冲区

示例001:

    :cd . | :r ! dir /w/s/b

问题:

1)是否可以自动指定或捕获Vim {range}以反映最近插入文件的行?

2)使用问题1)中获得的范围是否可以链接Ex模式命令以自动处理插入文件的行?

3)如果无法做上述1)或2),Vim是否有另一种方法可以识别最近插入缓冲区并在其上运行任意命令的行?

4)什么是相关的:帮助交叉引用可以用于此目的?

目标:

目标是能够将多个Ex模式命令链接在一起,以便轻松地将最近添加的行添加到文件中,而无需明确识别行号或使用可视模式或类似方法手动选择它们。

目标是执行类似于示例002中的(伪代码)

示例002:

    :cd . | :r ! dir /w/s/b | :{auto-range}s/^/    /

2 个答案:

答案 0 :(得分:2)

Vim将更改标记'[']设置为插入的范围;您可以使用它们为后续Ex命令定义范围:

:cd . | execute 'r ! dir /w/s/b' | '[,']s/^/    /

您需要:execute,否则|会被解释为属于:r命令。

答案 1 :(得分:1)

将这些行插入Vim之前处理这些行怎么样?

:r!dir /w/s/b | sed -e "s/^/    /"