2011-08-03 15 views
14

Potrzebuję przekazać wybrany tekst w vim do polecenia curl jako wartość parametru. Na przykład. Muszę być w stanie uruchomićZamień vim selection na wynik polecenia powłoki

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

z vim. Oczywiście część "body {border-radius: 5px;}" będzie dynamiczna. Zwykle wybór trybu wizualnego w vim.

Jak uzyskać zaznaczony tekst i przekazać go jako parametr do zawinięcia?

+0

Powiązane pytania dotyczące dodawania zaznaczonego tekstu jako 'STDIN' do poleceń powłoki: [Rurka do powłoki i odbiór na linii informacyjnej] (http://stackoverflow.com/questions/2575545/vim-pipe-selected-text-to -shell-cmd-and-receive-output-on-vim-info-command-line) i [Piping do iz powłoki, pracując z całymi buforami] (http://stackoverflow.com/questions/7867356/piping- buffer-to-external-command-in-vim) – user1129682

Odpowiedz

15

Możesz użyć polecenia :!, aby przefiltrować zaznaczony tekst za pomocą zewnętrznego programu. Tekst podawany jest do standardowego wejścia i zastępowany przez standardowe wyjście.

W tym przypadku będziesz musiał użyć polecenia cat i podstawienie karmić linie jako parametr do zwijania, tak:

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

Hacky. Ale tego właśnie chcę. Dzięki. – harithski

+6

To wydaje się działać na liniach z zaznaczeniem, a nie na wybranym tekście. Na przykład, jeśli wiersz to "abcde" i wybieram "bcd" i uruchamiam na przykład ': '<,'>! Python3 -c' print (input() +" x ") '' Otrzymuję "abcdex" zamiast "abcdxe ".Czytałem gdzieś, że używanie '\' <' and '\'> 'zamiast' '<' and ''> 'powinno działać przy wyborze, ale nie działa dla mnie. – AkiRoss

1

Nie można przetestować teraz więc nie 100% pewien, czy to będzie działać

esc, a następnie

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

Proszę powstrzymać się od zrzeczania się, dopóki nie spróbuję tego jutro, mmmkay? :) – Kimvais

+0

Co powiesz na próbę przed odpowiedzią? – user98761

1

Wybierając jeden lub więcej wierszy i za pomocą: można przekazać te linie do polecenia, na przykład:

więc uporządkować cały plik używając komendy sort, spróbuj to: rodzaj ggVG, który powinien wyglądać tak w edytorze:

B

C

: '<'> sort

+1

Jestem tego świadomy! pozwala uruchomić polecenie powłoki, ale chcę skopiować zaznaczenie do * części * polecenia powłoki. Nie tylko potuj. – harithski

0

Dla rur bez słów nieodpłatnych nowej linii, zobacz ten przykład na wielkie wybrany tekst:

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

Objaśnienie: Wybierz region, c jest do wyboru (zmiany), Cr, aby wykonać wyrażenie. Uwaga: dolar jest podkreśleniem dolara, ale podkreślenie nie jest widoczne po wysłaniu.