2011-08-03 17 views
14

Necesito pasar un texto seleccionado en vim a un comando curl como valor de parámetro. Por ejemplo. Necesito poder ejecutarReemplazar la selección de vim con la salida del comando de shell

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

de vim. Obviamente, la parte "body {border-radius: 5px;}" será dinámica. Por lo general, una selección de modo visual en vim.

¿Cómo obtengo el texto seleccionado y lo paso como parámetro para curl?

+0

Preguntas relacionadas para proporcionar el texto seleccionado como 'STDIN' a los comandos de la shell: [Pipe to shell y recibir salida en la línea de información] (http://stackoverflow.com/questions/2575545/vim-pipe-selected-text-to -shell-cmd-and-receive-output-on-vim-info-command-line) y [Tubería hacia y desde el shell, trabajando con búferes enteros] (http://stackoverflow.com/questions/7867356/piping- buffer-to-external-command-in-vim) – user1129682

Respuesta

15

Puede usar el comando :! para filtrar el texto seleccionado a través de un programa externo. El texto se envía a stdin y se sustituye por los resultados de stdout.

En este caso, usted tiene que utilizar el gato y el comando de sustitución para alimentar las líneas como un parámetro para rizar, así:

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

Hacky. Pero eso es exactamente lo que quiero. Gracias. – harithski

+6

Esto parece funcionar en líneas con selección, no en texto seleccionado. Por ejemplo, si una línea es "abcde" y selecciono "bcd" y ejecuto por ejemplo ': '<,'>! Python3 -c' print (input() +" x ") '' Obtengo" abcdex "en lugar de" abcdxe ".Leí en alguna parte que el uso de '\' <' and '\'> 'en lugar de' '<' and ''> 'debería operar en la selección, pero no funciona para mí. – AkiRoss

1

No se puede probar esto ahora por lo que no es 100% seguro si funcionará

esc, seguido de

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

Por favor absténgase de votar hasta que pueda intentarlo mañana, mmmkay? :) – Kimvais

+0

¿Qué le parece intentarlo antes de responder? – user98761

1

Al seleccionar una o más filas y el uso de:! se puede pasar estas líneas a un comando, por ejemplo:

Así ordenar un archivo completo con el comando sort, intente lo siguiente:! ggVG tipo, que debería tener este aspecto en su editor:

B

C

Un

: '<,'> tipo

+1

¡Soy consciente de eso! te permite ejecutar un comando de shell, pero quiero copiar la selección a * parte * del comando de shell. No solo canalizarlo. – harithski

0

Para las palabras de tuberías sin saltos de línea gratuitos, vea este ejemplo en mayúsculas seleccionada texto:

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

Explicación: Selecciona la región, c es (selección de cambio), Cr para ejecutar expresión. Nota: el dólar es el guión bajo del dólar, pero el guión bajo no está visible después de la publicación.

Cuestiones relacionadas