vim - 在 Ex 模式下将 "read"命令的输出处理为范围

标签 vim

背景:

在 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/

相关文章:

vim - YouCompleteMe GetDoc 预览窗口不会在选择时触发

linux - VIM 使用系统剪贴板

vim:如何在插件脚本中获取文件类型

vim 的 objective-c 标签文件

vim - vim:关闭多个标签前先确认

linux - 通过project.vim 将文件添加到项目中

linux - Ubuntu 16.04 LTS - 无法在 VIM 中启用 xterm_clipboard

vim - 如何将 vim 设置为与打开的文件具有相同的制表符和空格约定?

vim - 如何在vim中定期重复任何命令?

vim:我可以只使用键盘从 vim 复制文本并将其粘贴到 shell 提示符吗?