【发布时间】:2021-03-13 05:17:13
【问题描述】:
我想做的是使用<ctrl>V 选择一个文本块,然后运行一个仅对该文本起作用的外部过滤器程序。您可以使用内部 vim cmd 执行此操作,即 ~ 但如果我使用等效的 C 程序尝试它,则处理每个选定行的整行。如果我使用 shell 命令作为过滤器,也会发生同样的事情。
有什么方法可以只处理选定的文本或在 C 代码中提取选定的列范围?
示例 C 代码过滤器:
//File: vis.c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(int argc, char * argv[],char * envp[])
{
char c;
while(!feof(stdin)) fputc(toupper(fgetc(stdin)),stdout) ;
return 0;
}
Vim 命令:
<ctrl>V
:'<,'>!vis
使用 shell cmd 的示例过滤器:
:'<,'>! tr '[:lower:]' '[:upper:]'
enter code here
使用 vim 版本 7.4 和 8.1 进行测试
【问题讨论】: