2011-08-03 57 views
14

我需要將vim中的一些選定文本傳遞給curl命令作爲參數值。例如。我需要能夠運行將vim選擇替換爲shell命令的輸出

curl -sSd css="body { border-radius: 5px; }" http://prefixr.com/api/index.php 

從vim。顯然,「body {border-radius:5px;}」部分將是動態的。通常,在vim中可視化模式選擇。

如何獲取所選文本並將其作爲捲曲參數傳遞?

+0

提供所選文本爲'STDIN'到shell命令的相關問題:[管道到外殼和接收信息行輸出](http://stackoverflow.com/questions/2575545/vim-pipe-selected-text-to -shell-cmd-and-receive-output-on-vim-info-command-line)和[從外殼進出管道,使用整個緩衝區](http://stackoverflow.com/questions/7867356/piping-緩衝區到外部命令在vim) – user1129682

回答

15

您可以使用:!命令通過外部程序過濾所選文本。 將文本輸入到stdin,並用stdout的結果替換。

在這種情況下,你將不得不使用貓和命令替換到線進給作爲參數捲曲,像這樣:

:'<,'>!curl -sSd css="`cat`" http://prefixr.com/api/index.php 
+0

哈克。但這正是我想要的。謝謝。 – harithski

+6

這似乎適用於選擇行而不是選定文本。例如,如果一行是「abcde」,我選擇「bcd」並運行例如':'<,'>!python3 -c'print(input()+「x」)''我得到「abcdex」而不是「abcdxe 」。我在某處使用'\'<' and '\'>'代替''<' and ''>'應該在選擇時進行操作,但對我無效。 – AkiRoss

1

不能對此進行測試現在所以不是100%肯定是否會工作

ESC,其次是

:r ! curl -sSd="`cat`" http://prefixr.com/api/index.php` 
+0

請不要downvoting,直到我明天可以試試這個,mmmkay? :) – Kimvais

+0

如何在回答之前嘗試它? – user98761

1

通過選擇一個或多個行和使用!你可以通過這些線路的命令,例如:

所以排序使用sort命令整個文件,試試這個:ggVG排序,這看起來應該像這樣在你的編輯器:

ç

一個

: '<'>排序

+1

我知道!讓你運行一個shell命令,但是我想把選擇複製到一個* part * shell命令中。不只是管它。 – harithski

0

對於沒有無端換行符管道話,請參見本例爲大寫選擇文本:

select-region c Control-r = system("perl -pe '$=uc($)'", @")

說明:選擇區域,c是(改變選擇),CR來執行表達式。 注意:美元是美元下劃線,但在發佈後下劃線不可見。