bash - 通过 vim 中的外部脚本修改文本块
问题描述
在编辑文件时,我经常遇到以下任务:我有一个独立的脚本,它接受输入并输出它的修改版本(可能是sort
,可能是 sed 脚本,可能是更复杂的 python 脚本),我想运行它vim 中的一段文本。
这个答案解释了如何将文本块提供给外部脚本,我假设人们可以类似地使用:r
. 但是我怎样才能做到这两点:将文本从 vim 提供给外部脚本并将其输出返回到 vim?
解决方案
您可以使用普通模式命令过滤 vim 中的文本块
!{motion}
。例如,在下面的文本中使用外部排序工具(忽略 vim 现在有它自己的排序的事实):
b
a
d
c
使用!ip
(外部命令!
,i
nside p
aragraph),它将带您到带有预填充命令行提示符的命令行(我的看起来像
),您只需在其中键入您想要将文本作为标准输入发送到的:.,.+4!
任何外部工具(例如)。:.,.+4!sort
生成的粗壮将替换选定的行:
a
b
c
d
推荐阅读
- owl - Protege 4.3 中的个人分类不一致
- ajax - ajax成功导航到另一个页面的Framework7不起作用
- r - R:按一列分组,并返回任何其他列中值大于0的第一行,然后返回该行之后的所有行
- avro - Spring Cloud Stream kafka avro反序列化
- qt - 在 setFloating(true) 之后 QDockWidget 被覆盖在主窗口下
- c# - C# Mongo 驱动程序 - FindAsync 的问题
- javascript - 在 redux-persist 中 autoRehydrate 有什么用,为什么它在 v5 中被删除?
- angular - 将空路径重定向到登录页面(Angular 4)
- java - 根据点赞数和创建时间对实体进行评分
- python - 如何减少对高维稀疏矩阵的“零”效应?