Skip to content

파일 보기

Peach Commander에는 다른 앱을 열거나 파일을 바꾸지 않고 파일 내부를 들여다보게 해 주는 기본 제공 뷰어가 있습니다. 커서 아래 항목에서 F3을 누르면 매우 큰 파일이라도 뷰어가 즉시 열립니다. 내용을 보여 줄 가장 좋은 방법을 자동으로 고릅니다: 읽기 좋은 텍스트, 구문 색이 입혀진 코드, 원시 16진수 덤프, 또는 원본 크기 이미지. Quick View로 창 안에서 바로 미리 보거나 macOS Quick Look에 넘길 수도 있습니다.

파일 보기

  1. 활성 패널에서 파일로 커서를 옮깁니다.
  2. F3을 누릅니다(또는 파일 메뉴에서 보기 선택). 뷰어가 자체 창에서 열립니다.
  3. 도구 막대로 내용을 보여 주는 방식을 전환합니다: 텍스트, 코드, 16진수, 이미지, 렌더링. 자동 설정으로 두면 Peach Commander가 결정합니다.
  4. 화살표 키, Page Up/Page Down, 스크롤 막대로 스크롤합니다. 긴 텍스트는 미니맵 버튼을 켜서 파일 전체를 한눈에 보고 이동합니다.
  5. N을 눌러 다음 선택 파일로 이동하거나 Esc로 창을 닫습니다.

오른쪽에 미니맵이 있는, 텍스트 파일을 보여 주는 기본 제공 뷰어 (그림: 도구 막대에 표현 선택기와 미니맵이 있는 텍스트 파일 보기.)

텍스트 찾기 및 인코딩 변경

  • Ctrl+F를 눌러 파일 안을 검색합니다. F3으로 다음 일치, Shift+F3으로 이전 일치로 이동합니다.
  • 텍스트가 깨져 보이면 도구 막대의 인코딩을 클릭하거나(또는 E를 눌러) 올바르게 읽힐 때까지 텍스트 인코딩을 순환합니다. 자동 설정이 보통 맞습니다.
  • W를 눌러 긴 줄의 자동 줄바꿈을 전환합니다.

행에 대한 메모

메모 플러그인이 설치되어 있으면 메모를 파일 전체가 아니라 파일의 특정 행에 달 수 있습니다.

  • 커서를 해당 행에 놓고 보기 ▸ 이 행에 메모…(Cmd+Shift+N)를 선택하십시오. 메모 편집기가 제목에 파일 이름과 행 번호를 표시한 채 열립니다.
  • 이미 메모가 달린 행은 창 아래쪽 표시 패널에 메모 그룹으로 검색 표시와 나란히 나타납니다. Cmd+Ctrl+M으로 패널을 열고, 항목을 두 번 클릭하면 해당 행으로 이동합니다.
  • 메모 자체는 다른 모든 메모와 함께 저장되므로 메모 개요와 파일 찾기가 똑같이 찾아냅니다. 삭제는 메모 편집기에서 하며, 패널의 닫기 단추는 그룹을 숨길 뿐입니다.

Quick View와 Quick Look

Quick View는 사용하지 않는 패널에 실시간 미리 보기를 표시하므로, 한쪽에서 계속 탐색하면서 다른 쪽에서 미리 볼 수 있습니다.

  1. Ctrl+Q를 누릅니다. 비활성 패널이 미리 보기 영역으로 바뀝니다.
  2. 활성 패널에서 여러 파일 위로 커서를 옮겨 각각을 미리 봅니다.
  3. Ctrl+Q를 다시 누르거나 Esc를 눌러 패널을 일반 파일 목록으로 되돌립니다.

macOS 자체가 처리하는 빠른 전체 화면 미리 보기는 Cmd+Y(Quick Look)를 누릅니다. Cmd+Y나 Space를 다시 누르면 닫힙니다.

사이드 패널의 정보 페이지

사이드 패널(보기 > 미리보기 패널 또는 Cmd+Shift+P)에는 커서 아래 항목을 Finder의 정보 사이드바처럼 보여 주는 정보 페이지가 있습니다.

  • 미리보기는 패널의 가로폭을 가득 채웁니다. 패널을 넓히면 미리보기도 함께 커집니다. 패널의 왼쪽 가장자리를 끌어 넓히거나 좁힐 수 있으며, 너비는 기억됩니다.
  • 작은 축소판이 아니라 실제 macOS 미리보기입니다. 훑어보기가 표시할 수 있는 모든 형식이 여기서도 동작하며, 여러 쪽짜리 문서는 미리보기 안에서 쪽 단위로 넘길 수 있습니다.
  • 그 아래에는 이름, 종류, 크기가 있고, 이어서 만든 날짜와 수정한 날짜, 그리고 어느 폴더에 있는지가 표시됩니다.

커서를 옮기면 이름과 세부 정보는 즉시 갱신되고, 미리보기는 잠시 뒤에 따라옵니다. 그래서 긴 폴더에서 화살표 키를 누르고 있어도 지나가는 줄마다 미리보기가 시작되지는 않습니다.

Java 클래스 파일 디컴파일

Java Decompiler 플러그인을 켜면 .class 파일에서 F3을 누를 때 이진 데이터 대신 읽을 수 있는 코드가 표시됩니다. JAR이나 ZIP 안의 클래스 파일도 마찬가지로, 압축을 풀지 않고 들어가서 볼 수 있습니다.

플러그인 자체에는 디컴파일러가 없습니다. 사용자가 설치한 엔진을 구동할 뿐이며, 엔진은 언제든지 바꿀 수 있습니다.

  • CFR(MIT 라이선스)과 Vineflower(Apache 2.0)는 Java 소스를 만들어 냅니다. cfr.jar 또는 vineflower.jar를 엔진 폴더에 넣으십시오.
  • Procyon(Apache 2.0)은 소스를 만들어 내는 세 번째 디컴파일러입니다.
  • javap는 내려받을 것이 전혀 없습니다. 모든 JDK에 들어 있으며, Java 소스가 아니라 바이트코드를 보여 줍니다.

아무것도 대신 내려받지 않습니다. 이들은 각자의 라이선스를 가진 서드파티 프로그램이며, Peach Commander는 이를 가져오지도 갱신하지도 않습니다. 뷰어의 엔진 폴더… 버튼은 이들이 놓일 폴더를 열고, 각 엔진의 이름과 구할 곳을 적은 메모를 남깁니다. javap를 제외하면 모두 Java가 설치되어 있어야 합니다.

엔진은 뷰어 상단의 메뉴로 바꿉니다. 선택한 엔진이 즉시 사용되고 결과는 보관되므로, 같은 파일에서 두 엔진을 비교하는 일이 즉시 이루어집니다.

소스에는 구문 강조가 적용되며, 두 버튼이 그다음을 맡습니다. 다른 이름으로 저장…은 파일로 쓰고, 편집기에서 열기는 Mac에서 .java를 여는 프로그램에 넘깁니다. 결과가 매우 크면 잠시 기다리게 하는 대신 강조 없이 바로 표시하며, 그럴 때는 상태 줄에 표시됩니다.

결과는 디스크에 캐시되므로 전에 본 파일을 다시 열면 즉시 표시됩니다. 캐시 키에는 파일의 크기와 날짜, 그리고 엔진 인자가 들어가므로 다시 빌드한 클래스나 바뀐 옵션은 새로 디컴파일됩니다. 선택한 엔진은 파일 종류별로 기억됩니다. 프로필은 extends = cfr로 내장 엔진을 상속하고 옵션만 덮어쓸 수 있어, 같은 엔진의 설정을 두 가지로 유지할 때 편리합니다.

비교를 켜면 자체 엔진 메뉴를 가진 두 번째 창이 열립니다. 두 디컴파일러는 서로 다른 지점에서 실패하므로, 어느 쪽을 믿을지 고민하기보다 나란히 보는 편이 빠를 때가 많습니다. 한쪽에서 javap를 고르면 바이트코드가 소스 옆에 놓입니다. 두 창은 캐시를 공유하므로 이미 실행한 엔진 사이를 오가는 것은 즉시 이루어집니다.

.jar, .apk, .dex 전체에 F3을 누르면 한 번에 모두 디컴파일하고 소스 옆에 패키지 트리를 보여줍니다. 트리 위의 검색 필드는 모든 클래스를 훑습니다. 어느 클래스에 있는지 아직 모를 때 문자열이나 호출, 상수가 실제로 어디에 나오는지 — 클래스 하나로는 답할 수 없는 바로 그 질문입니다. 일치한 항목만 트리에 남고 첫 번째는 해당 줄에서 열립니다. Enter로는 여전히 JAR이 압축 파일로 열립니다. 두 동작은 그대로 분리되어 있습니다.

더 직접적인 두 번째 방법이 있습니다. .class 파일이나 압축 파일 전체에 커서를 두고 소스로 디컴파일을 고르십시오 (명령 메뉴, 컨텍스트 메뉴, 또는 ⌘⇧J). 클래스가 디컴파일되고 결과는 반대쪽 파일 패널에 평범한 .java 파일로 열립니다. 그 뒤로는 파일 관리자 전체가 그대로 쓰입니다. F3은 Peach Commander 자체의 자바 강조로 보여주고, Alt+F7은 그 파일들을 가로질러 검색하며, F5는 밖으로 복사하고, 비교나 태그도 다른 파일과 똑같습니다. 대부분의 작업에서는 이것이 별도 창보다 낫습니다. 그래서 플러그인의 트리는 설정 ▸ 디컴파일러에서 끌 수 있습니다.

두 번째 플러그인이 .NET에 같은 일을 합니다. 관리 .dll, .exe, .winmd에 F3을 누르면 그 타입들을 C#으로 보여주고, 어셈블리를 소스로 디컴파일(⌘⇧N)은 그것들을 파일 패널에 넣으며, 검색도 같은 방식으로 어셈블리 안을 들여다봅니다. 소스에는 ILSpy(MIT, dotnet tool install -g ilspycmd)를, IL에는 Mono의 monodis를 씁니다 — javap의 .NET 짝입니다. 네이티브 .dll은 확장자가 같고 보여줄 소스가 없으므로, 플러그인이 열기 전에 확인하고 내장 뷰어에 맡깁니다.

설정 페이지에는 엔진 검사 버튼이 있고, 눌러 볼 만합니다. 다른 곳의 “설치됨”은 파일이 있다는 뜻일 뿐이며, JDK 없는 맥의 자바 엔진은 존재하지만 실행되지 않습니다. 이 검사는 각 엔진에 버전을 물어보고 실제로 동작하는 것이 무엇인지 알려 줍니다.

안드로이드도 지원합니다. .dex 파일에서 F3을 누르면 jadx(Apache 2.0, brew install jadx)가 Dalvik 바이트코드를 다시 Java로 되돌립니다. 이를 위해 필요한 것은 엔진 설명 한 개였습니다 — 같은 방식, 다른 형식입니다.

플러그인은 켜기 전까지 꺼져 있습니다(설정 ▸ 플러그인). 대부분은 .class 파일을 열 일이 없고, 엔진이 없으면 쓸모도 없기 때문입니다.

직접 만든 엔진을 추가하려면 엔진 폴더에 decompilers.ini를 만드십시오.

[myengine]
name   = My Decompiler
kinds  = class
tool   = java
args    = -jar {engine} {input}
engine  = my-decompiler.jar   ; a bare name is looked up in this folder
output  = stdout
timeout = 30                  ; seconds before the engine is stopped

{input}, {engine}, {outdir}는 실행 시 채워집니다. 사용자가 적은 항목이 기본 항목보다 우선하며, 기본 이름(cfr, vineflower, procyon, javap)을 다시 쓰면 항목이 하나 더 생기는 대신 그것을 대체합니다.

단축키

동작 단축키
커서 아래 파일 보기 F3
커서 아래 파일만 보기(표시된 파일 무시) Shift+F3
외부 뷰어에서 열기 Option+F3
뷰어 안에서 찾기 Ctrl+F
커서가 있는 행에 메모 Cmd+Shift+N
표시 패널 열기/닫기 Cmd+Ctrl+M
다음 / 이전 일치 F3 / Shift+F3
다른 패널에서 Quick View Ctrl+Q
Quick Look(macOS 미리 보기) Cmd+Y
뷰어 또는 Quick View 닫기 Esc

참고

  • 뷰어는 읽기 전용입니다. 파일을 바꾸려면 편집기를 사용하세요(파일 편집 참조).
  • 매우 큰 파일도 지연 없이 열립니다: 텍스트는 빠르게 스크롤되는 보기로 열리고, 16진수 보기는 크기에 상관없이 디스크에서 바로 스트리밍됩니다.
  • 폴더에서 F3을 누르면 파일 바이트 대신 내용 요약과 총 크기를 봅니다.
  • 렌더링 모드는 웹 페이지 같은 서식 있는 내용을 표시하고, 16진수 모드는 원시 바이트를 해당 문자와 나란히 보여 주어 이진 파일을 살펴보는 데 편리합니다.
  • 렌더링 모드에서도 텍스트를 선택해 복사할 수 있고, 찾기는 렌더링된 페이지를 검색합니다. 렌더링된 페이지에 적용할 수 없는 버튼 — 서식, 인코딩, 모두 선택, 선택 항목, 이동 — 은 아무 일도 하지 않는 대신 흐리게 표시됩니다.
  • 서식 버튼은 구조화된 파일(JSON, XML, HTML, INI, YAML 및 해당 명령줄 도구가 설치되어 있으면 그 밖의 형식)의 들여쓰기를 다시 맞춥니다. 자세한 설명은 파일 편집에 있으며, 여기서도 같은 방식으로 동작합니다.