阅读 vim 中的选定文本

Read selected text in vim

我有以下 bash 脚本 (play.bash):

#!/bin/bash
pico2wave -l=en-US -w=/tmp/test.wav ""
aplay /tmp/test.wav
rm /tmp/test.wav

我想用它来阅读 vim 编辑器中选定的文本。 以下无效

:'<,'>w !bash play.bash

命令执行了,但我没有听到。

我想只听文字,不离开 vim window。

这可能吗?

在 vim 中使用 ! 命令时,您的选择将通过标准输入通过管道传输到您的脚本,而不是作为命令行参数提供。

一个简单的解决方案是修改您的脚本,使其从标准输入读取:

xargs pico2wave -l=en-US -w=/tmp/test.wav

xargs 从标准输入读取,然后使用数据作为命令行参数调用 pico2wave,删除换行符。