본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 생산성·자동화 · 윈도우즈 유틸

Psfzf

0

PSFzf는 kelleyma49가 개발한 PowerShell 모듈로, 명령줄 퍼지 파일 찾기 도구인 fzf를 PowerShell 환경에서 사용할 수 있도록 래핑합니다.

MIT 라이선스디렉터리 이동명령 기록탭 완성파일 선택퍼지 찾기

소개

PSFzf는 kelleyma49가 개발한 PowerShell 모듈로, 명령줄 퍼지 파일 찾기 도구인 fzf를 PowerShell 환경에서 사용할 수 있도록 래핑합니다. 이 모듈은 파일 및 디렉터리 선택, 명령 기록 검색, 탭 완성 확장 등 다양한 기능을 제공하여 PowerShell 사용자의 생산성을 높입니다. MIT 라이선스로 배포되며, PowerShell Gallery와 Scoop을 통해 설치할 수 있습니다.

상세정보

파일 및 디렉터리 선택

Get-ChildItem과 Invoke-Fzf를 조합하여 재귀적 파일 및 디렉터리 목록에서 퍼지 검색을 수행할 수 있습니다. 선택된 항목은 파이프라인을 통해 Set-Location이나 notepad 같은 명령으로 전달될 수 있습니다.

PSReadline 통합

PSFzf는 PSReadline과 통합되어 키보드 단축키로 다양한 작업을 수행할 수 있습니다:

  • Ctrl+t: 현재 토큰을 기준으로 경로 선택
  • Ctrl+r: 명령 기록에서 퍼지 검색 (실행 없이 삽입)
  • Alt+c: 선택한 디렉터리로 위치 변경 (Set-Location 기본)
  • Alt+a: 기록에서 명령줄 인수 선택 및 미리보기

탭 완성 확장

PSFzf는 표준 탭 완성을 대체하여 fzf 기반의 인터랙티브 완성 기능을 제공합니다. Set-PSReadLineKeyHandler를 통해 Tab 키를 Invoke-FzfTabCompletion에 바인딩할 수 있으며, git, Get-Service, Get-Process 등과 같은 특정 명령에 대해 컨텍스트Aware 탭 완성을 지원합니다. 트리거 문자열은 FZF_COMPLETION_TRIGGER 환경변수로 변경 가능하며, 미리보기 창의 위치와 동작을 사용자 정의할 수 있습니다.

파이프라인 내 활용

Invoke-Fzf는 파이프라인 중간 또는 표현식의 일부로 사용할 수 있습니다. 예를 들어, 디렉터리만 디렉터리를 필터링하여 위치 변경하거나, 파일 목록에서 특정 항목을 선택해 편집기에 전달하는 패턴을 지원합니다.

동작 재정의

PSFzf는 다음과 같은 환경변수를 통해 fzf의 동작을 재정의할 수 있습니다:

  • _PSFZF_FZF_DEFAULT_OPTS: PSFzf 전용 fzf 기본 옵션 설정
  • FZF_DEFAULT_COMMAND: 파일 시스템에서의 기본 명령 재정의
  • FZF_CTRL_T_COMMAND: Ctrl+t 시 실행할 명령 지정
  • FZF_ALT_C_COMMAND: Alt+c 시 실행할 명령 지정
  • PSFZF_EDITOR_OPTIONS: Invoke-FuzzyEdit에서 사용할 편집기 옵션 전달

헬퍼 함수

PSFzf는 다음과 같은 유용한 헬퍼 함수를 제공합니다 (별칭은 Set-PSFzfOption -EnableAlias로 활성화):

  • Invoke-FuzzyEdit (fe): 선택한 파일을 기본 편집기로 열기
  • Invoke-FuzzyFasd (ff): fasdr 기록 기반 디렉터리 이동 (Windows)
  • Invoke-FuzzyZLocation (fz): ZLocation 기록 기반 이동 (Windows 전용)
  • Invoke-FuzzyGitStatus (fgs): git status 결과에서 파일 선택
  • Invoke-FuzzyHistory (fh): 기록에서 이전 명령 재실행 (PSReadline 역방향 기록 권장)
  • Invoke-FuzzyKillProcess (fkill): 선택한 프로세스 강제 종료
  • Invoke-FuzzySetLocation (fd): 선택한 경로로 위치 변경
  • Invoke-FuzzyScoop (fs): Scoop 애플리케이션 목록에서 선택 및 설치
  • Invoke-PsFzfRipgrep: ripgrep과 fzf를 결합한 인터랙티브 파일 내용 검색
  • Set-LocationFuzzyEverything (cde): Everything 검색 엔진을 통한 즉시 위치 이동 (Windows 전용, PSEverything 필요)

다운로드·설치 방법

PSFzf는 PowerShell Gallery에서 Install-Module PSFzf 명령으로 설치할 수 있으며, Scoop에서는 scoop install psfzf 명령으로 설치 가능합니다. 설치를 위해서는 먼저 fzf가 시스템 PATH에 있어야 합니다. Windows에서는 winget install junegunn.fzf 명령이나 공식 웹사이트에서 바이너리를 다운받아 PATH에 추가할 수 있습니다. 설치 후 Get-Command fzf를 실행해 fzf가 정상적으로 인식되는지 확인할 수 있습니다.

기본 사용법

PSFzf를 사용하기 위해서는 먼저 PowerShell 프로파일에 PSReadline을 import한 후 PSFzf를 import해야 합니다. 기본 설정으로 다음과 같은 단축키를 사용할 수 있습니다:

  • Ctrl+t: 현재 작업 디렉터리 하위에서 파일/폴더 검색 및 선택
  • Ctrl+r: 명령 기록에서 퍼지 검색하여 현재 줄에 삽입 (실행 안 함)
  • Alt+c: 디렉터리 검색 후 선택한 경로로 이동
  • Alt+a: 기록에서 사용된 명령줄 인수 검색 및 현재 줄에 삽입

탭 완성을 활성화하려면 Set-PsFzfOption -TabExpansion 명령을 실행하고, Tab 키를 Invoke-FzfTabCompletion에 바인딩해야 합니다. 헬퍼 함수의 별칭을 사용하려면 Set-PSFzfOption -EnableAlias 명령을 실행해야 합니다.

이런 경우에 유용합니다

깊은 디렉터리 구조에서 특정 파일을 빠르게 찾아야 하는 개발자나 시스템 관리자에게 유용합니다. 예를 들어, 소스 트리에서 특정 설정 파일을 찾아서 편집하거나, 로그 디렉터리에서 최근 오류 파일을 선택해 보는 작업에 적합합니다. 또한, 자주 사용하는 명령을 기록에서 찾아서 재입력해야 할 때 Ctrl+r 단축키를 통해 효율적으로 작업할 수 있습니다. Scoop을 통해 애플리케이션을 관리하는 사용자는 fs 별칭을 통해 설치 가능한 패키지를 검색하고 빠르게 설치할 수 있습니다.

지원 환경·시스템 요구사항

PSFzf는 PowerShell 5.0 이상에서 동작하며, Windows, macOS, Linux(WSL)에서 테스트되었습니다. Windows에서는 PowerShell 5.0, 6.0, 7.0에서, macOS와 Linux에서는 PowerShell 6.0과 7.0에서 정상 동작을 확인했습니다. 특정 헬퍼 함수는 추가 조건이 필요합니다: Invoke-FuzzyFasd는 Windows에서 fasdr가 필요하며, Invoke-FuzzyZLocation과 Set-LocationFuzzyEverything은 Windows 전용이며 각각 ZLocation과 PSEverything이 선행 설치되어야 합니다. Invoke-FuzzyScoop은 Windows에서만 작동하며 Scoop이 필요하고, Invoke-FuzzyGitStatus는 git이, Invoke-PsFzfRipgrep은 ripgrep과 bat이 설치되어야 합니다.

최신 버전·업데이트

현재 버전은 2.7.12이며, 2026년 9월 6일에 마지막으로 업데이트되었습니다. 이 버전은 이전 버전과의 호환성을 유지하면서 내부 안정성을 개선했습니다. 최신 변경 사항은 GitHub 저장소의リリースノート에서 확인할 수 있습니다.

제한 사항·확인 사항

PSFzf는 fzf 실행 파일에 의존하므로, fzf가 설치되어 있지 않거나 PATH에 등록되어 있지 않으면 정상적으로 동작하지 않습니다. Windows에서는 winget이나 직접 다운로드로 fzf를 설치해야 하며, macOS에서는 Homebrew나 바이너리 다운로드, Linux에서는 패키지 관리자나 바이너리를 사용해야 합니다. 일부 헬퍼 함수는 플랫폼 제한이나 추가 소프트웨어 설치를 요구하므로, 사용 전 문서를 확인해야 합니다.

시스템 요구사항

fzf 실행 파일이 시스템 PATH에 있어야 하며, PowerShell 5.0 이상에서 동작합니다. Windows에서는 winget 또는 직접 다운로드로 fzf를 설치할 수 있습니다.