2008-10-23 9 views
24

Me preguntaba si hay una manera de ver la salida de cualquier comando, directamente dentro de vim, en lugar de redirigirlo primero a un archivo y y luego abrir ese archivo.redirección y vim

E.x. Necesito algo así como $ gvim < diff -r dir1/ dir2/

Esto da mensaje de error de redirección ambigua

sólo quiero ver los diferenciales entre dir1 y Dir2 recta dentro gvim.

¿Puede alguien proporcionar un buen hack?

Respuesta

4

JST uso gvimdiff lugar
o vimdiff
para pegar la salida de un comando directamente en vim, por ejemplo, ls, tratar
:% ls r

+0

Si tiene un alias en 'vim' (a una instalación personalizada, tal vez),' vimdiff' usará el vim de todo el sitio. Puede usar 'vim -d' (o configurar otro alias) para obtener el comportamiento" diff "con su vim personalizado. –

41
diff file1 file2 | vim -R - 

El -R hace lectura solo para que no modifique accidentalmente la entrada (que puede ser o no el comportamiento deseado). El guión único indica vim para leer su entrada sobre la entrada estándar. Funciona para otros comandos, también.

6

vim -d file1 file2

10

También, cuando ya están en Vim:

:r! diff file1 file2 
6

Aunque también sugeriría vimdiff o vim -d para el caso de mirar a un diff, sólo tengo que compartir esto (más general) enfoque para usar el uso de vim en pipes: vipe (del paquete moreutils en Ubuntu).

Por ejemplo:

hallazgo -name '* .png' | vipe | xargs rm

le permiten editar primero (en vim) la lista de archivos .png encontrados antes de pasarlos a xargs rm.

2

Usted puede hacer esto con

diff -r dir1/ dir2/ | gvim - 

la '-' opción de vim (o gvim) le dice a Vim para abrir STDIN

1

A menudo uso vimdiff -g <file1> <file2>

0

Uno de los más simple y maneras convenientes es hacerlo así:

vimdiff -R <file1> <file2> 

Nuevamente, el indicador '-R' lo abre para el modo de solo lectura para evitar cualquier cambio accidental.

0

Lo que usted está buscando se llama process substitution:

vim <(diff -r dir1/ dir2/)

Pero el plugin DirDiff mencionado por Luc es mucho más útil para comparar directorios.