Подтвердить что ты не робот

Перенаправление и vim

Мне было интересно, есть ли способ увидеть вывод любой команды, прямо внутри vim, а не сначала перенаправлять его в файл и затем откройте этот файл.

E.x. Мне нужно что-то вроде $ gvim < diff -r dir1/ dir2/

Это дает неоднозначное сообщение об ошибке перенаправления

Я просто хочу видеть различия между dir1 и dir2 прямо внутри Gvim.

Может ли кто-нибудь дать хороший хак?

4b9b3361

Ответ 1

diff file1 file2 | vim -R -

-R делает его доступным только для чтения, поэтому вы случайно не изменяете ввод (который может или не может быть вашим желаемым поведением). Одиночная тире сообщает vim читать свой ввод через стандартный ввод. Работает и для других команд.

Ответ 2

Кроме того, когда уже в Vim:

:r! diff file1 file2

Ответ 3

vim -d file1 file2

Ответ 4

Хотя я бы также предложил vimdiff или vim -d для рассмотрения diff, я просто должен поделиться этим (более общим) подходом для использования использования vim в трубах: vipe (из пакета moreutils в Ubuntu).

Например:

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

позволит вам сначала отредактировать (в vim) список файлов .png, найденных до передачи его в xargs rm.

Ответ 5

jst использовать gvimdiff вместо
или vimdiff
для вставки вывода команды прямо в vim, например ls, попробуйте :!% Г Ls

Ответ 7

Вы можете сделать это с помощью

diff -r dir1/ dir2/ | gvim -

Опция '-' для vim (или gvim) сообщает vim, чтобы открыть STDIN

Ответ 8

Я часто использую vimdiff -g <file1> <file2>

Ответ 9

Один из самых простых и удобных способов - сделать это следующим образом:

vimdiff -R <file1> <file2>

Снова флаг '-R' должен открыть его для режима только для чтения, чтобы избежать случайных изменений.

Ответ 10

То, что вы ищете, называется замещение процесса:

vim <(diff -r dir1/ dir2/)

Но плагин DirDiff, упомянутый Люком, гораздо полезнее сравнивать каталоги.