vimdiff는 파일 대신 출력을 비교합니다.

vimdiff는 파일 대신 출력을 비교합니다.

두 명령 출력을 비교하려고 합니다(파일 없음).

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

리디렉션, 파이프를 사용해 보았지만 vim - -c뭔가 빠진 것 같습니다. 누구든지 도와줄 수 있나요?

답변1

당신은 $(…)에 대해 혼란스러워하고 있습니다 <(…). 출력을 다음과 같이 전달하는 전자를 사용했습니다.논쟁도착하다 vimdiff. 예를 들어, 마지막 줄에 가 /path/to/foo포함되어 있으면 bar bar bar다음 명령을 실행하세요.

echo $(tail -1 /path/to/foo)

동등하다

echo bar bar bar

대신에 이것을 사용해야 합니다 <(…).프로세스 교체, 다음과 같이 출력됩니다.더미 파일vimdiff명령 에 . 따라서 다음을 이용하시기 바랍니다.

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

bash이는 및 에서 작동 zsh하지만 분명히 다음이 있습니다.절대에서 프로세스 교체를 수행합니다 tcsh.

답변2

존재하다fish껍데기, 이것psub주문하다프로세스 대체를 수행하면 다음과 같은 예가 됩니다.

vimdiff (tail /tmp/cachain.pem | psub) (tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | psub)

그런데, 해당 파일의 특정 Git 버전으로 파일을 편집하는 것은 프로세스 대체 및 vimdiff.definition( fish구문에서는 있지만 POSIX 쉘 구문에 쉽게 적응할 수 있음) 이라고 생각합니다.

function vimgitdiff
    vimdiff $argv[1] (git show $argv[2]:$argv[1] | psub)
end

그럼 전화해

vimgitdiff path/to/file branch-name

왼쪽 작업 트리에서 현재 상태를 열고 Vim오른쪽 작업 트리에서 현재 상태를 엽니다.path/to/filebranch-name

관련 정보