2

背景:

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

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

示例 001:

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

问题:

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

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

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

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

目标:

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

目标是做类似于示例 002 中的(伪代码)的事情

示例 002:

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

2 回答 2

2

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

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

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

于 2012-08-24T07:16:02.630 回答
1

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

:r!dir /w/s/b | sed -e "s/^/    /"
于 2012-08-23T21:44:14.263 回答