用shell命令的输出替换vim选择

har*_*ski 15 vim curl external pipe

我需要将vim中的一些选定文本作为参数值传递给curl命令.例如.我需要能够跑步

curl -sSd css="body { border-radius: 5px; }" http://prefixr.com/api/index.php
Run Code Online (Sandbox Code Playgroud)

来自vim.显然,"body {border-radius:5px;}"部分将是动态的.通常,在vim中选择视觉模式.

如何获取所选文本并将其作为卷曲参数传递?

Mic*_*bus 17

您可以使用该:!命令通过外部程序筛选所选文本.文本被送到stdin并用stdout的结果替换.

在这种情况下,您将必须使用cat和命令替换来将行作为参数提供给curl,如下所示:

:'<,'>!curl -sSd css="`cat`" http://prefixr.com/api/index.php
Run Code Online (Sandbox Code Playgroud)

  • 这似乎适用于选择的行,而不是选定的文本.例如,如果一行是"abcde"并且我选择"bcd"并运行例如`:'<,'>!python3 -c'print(input()+"x")'`我得到"abcdex"而不是"abcdxe".我在某处读到使用`\`<`和`\`>`代替`'<`和`'>`应该对选择进行操作,但对我不起作用. (8认同)