Перенаправление и vim
Мне было интересно, есть ли способ увидеть вывод любой команды,
прямо внутри vim, а не сначала перенаправлять его в файл и
затем откройте этот файл.
E.x. Мне нужно что-то вроде
$ gvim < diff -r dir1/ dir2/
Это дает неоднозначное сообщение об ошибке перенаправления
Я просто хочу видеть различия между dir1 и dir2 прямо внутри
Gvim.
Может ли кто-нибудь дать хороший хак?
Ответы
Ответ 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
Ответ 6
Кстати, есть плагин DirDiff.
Ответ 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, упомянутый Люком, гораздо полезнее сравнивать каталоги.