背景:
在 vim(Ex 模式)中,可以运行外部命令并将该命令的输出自动插入到当前缓冲区中。
在示例 001 中,我们了解如何 cd 到当前目录,获取其中的文件列表并将其自动插入到当前缓冲区
示例 001:
:cd . | :r ! dir /w/s/b
问题:
1) 是否可以自动指定或捕获 Vim {range} 以反射(reflect)最近插入到文件中的行?
2) 使用问题 1) 中获得的范围是否可以链接 Ex 模式命令来自动处理插入到文件中的行?
3) 如果无法执行上述 1) 或 2),Vim 是否有其他方法可以识别最近插入缓冲区的行并对其运行任意命令?
4) 可用于此目的的相关 :help 交叉引用是什么?
目标:
目标是能够将多个 Ex 模式命令链接在一起,以轻松运行最近添加到文件中的行的进程,而无需明确识别行号或使用可视模式或类似方式手动选择它们。
目标是执行与示例 002 中的(伪代码)类似的操作
示例 002:
:cd . | :r ! dir /w/s/b | :{auto-range}s/^/ /
最佳答案
Vim 将改变标记 '[
和 ']
设置为插入的范围;您可以使用它们来定义后续 Ex 命令的范围:
:cd . | execute 'r ! dir /w/s/b' | '[,']s/^/ /
您需要 :execute
,否则 |
会被解释为属于 :r
命令。
关于vim - 在 Ex 模式下将 "read"命令的输出处理为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099444/