4P by neo 1달전 | favorite | 댓글 1개

WezTerm 사용기

시작하기 전에

  • WezTerm 설치 필요
  • macOS 사용자는 Homebrew로 설치 가능 ($ brew install wezterm)

Lua에 대한 설명

  • WezTerm의 설정은 Lua로 정의
  • Lua는 다른 동적 프로그래밍 언어와 유사하여 쉽게 읽을 수 있음
  • 복잡한 설정을 위해 Lua를 깊이 있게 학습하는 것이 좋음

설정 파일과 피드백 루프

  • 설정 파일은 $XDG_CONFIG_HOME/wezterm/wezterm.lua에 위치
  • 설정 파일 변경 시 자동으로 재로드
  • 디버그 오버레이 (CTRL + SHIFT + L)로 로그 확인 가능

외관 설정

색상 테마

  • WezTerm은 1,000개 이상의 색상 테마를 제공
  • 예시: config.color_scheme = 'Tokyo Night'

동적 색상 테마

  • 새로운 창을 열 때마다 무작위로 색상 테마를 변경하는 예제 코드 제공

시스템 외관 존중

  • 시스템의 외관 모드에 따라 색상 테마를 자동으로 변경
  • appearance.lua 파일 생성 후 설정

폰트 설정

  • 기본 폰트는 JetBrains Mono
  • 예시: config.font = wezterm.font({ family = 'Berkeley Mono' })

창 스타일링

  • 창의 배경 투명도와 블러 설정
  • 예시: config.window_background_opacity = 0.9

상태 표시줄 설정

  • 탭 바 오른쪽에 파워라인 스타일의 상태 표시줄 추가
  • WezTerm의 이벤트 API 사용

키 설정

기본 키 매핑

  • 기본 키 매핑을 유지하거나 비활성화 가능 (config.disable_default_key_bindings = true)

키 매핑 예제

  • Option + Left ArrowOption + Right Arrow를 단어 간 이동으로 매핑
  • 설정 파일 열기 단축키 설정 (CMD + ,)

다중화 기능

  • WezTerm의 다중화 기능 사용
  • 창 분할 단축키 설정 (CTRL + SHIFT + P)

리더 키 설정

  • 리더 키를 CTRL + A로 설정
  • 창 분할 단축키를 리더 키와 함께 사용

창 이동

  • 창 간 이동을 위한 키 매핑 설정 (vim 방향키 사용)

창 크기 조정

  • 창 크기 조정을 위한 키 테이블 설정
  • 리더 키와 함께 사용하여 창 크기 조정

프로젝트 작업 공간

작업 공간 생성 및 전환

  • projects.lua 파일 생성 후 프로젝트 전환 함수 추가
  • 프로젝트 선택 시 새로운 WezTerm 작업 공간 생성

GN⁺의 정리

  • WezTerm은 Lua를 사용한 유연한 설정이 가능하여 다양한 사용자 정의가 가능함
  • 자동 재로드와 디버그 오버레이 기능으로 설정 변경이 용이함
  • 다중화 기능과 작업 공간 관리 기능이 뛰어나며, 다양한 키 매핑을 통해 생산성을 높일 수 있음
  • 비슷한 기능을 제공하는 터미널로는 Alacritty와 kitty가 있음
Hacker News 의견
  • 최근 WezTerm으로 전환한 후 매우 만족함. 이전에는 kitty를 사용했으며, iTerm2에서의 설정과 단순함을 좋아했음. WezTerm은 기본적으로 제공하는 기능이 훨씬 뛰어남. 터미널 설정이 짧아서 편집기 화면에 모두 표시됨. 이후 터미널은 신경 쓸 필요가 없어짐

    • kitty 사용 시 문제를 자주 겪었고, iTerm2의 기능을 재현하려고 했으나 kitty의 유지보수자의 무뚝뚝하고 무시하는 댓글에 실망함
    • 예를 들어, "tmux를 kitty에서 어떻게 설정하나요?"라는 질문에 "하지 마세요, tmux는 멍청해요"라는 답변을 받았음. 결국 포기함
  • WezTerm은 GitHub 이슈에 매우 빠르게 대응하며, 보통 하루나 이틀 내에 문제를 해결해줌. SSH를 통한 modifier 키 관련 작은 문제를 제외하고는 기능이 거의 완벽함. 빠르고 좋음

    • 이전에는 Alacritty를 열렬히 사용했으나 원격 emacs를 위한 더 나은 modifier 지원이 필요했음
  • Kubuntu에서 Ubuntu로 전환하면서 Konsole의 일부 기능(무한 스크롤백, 스크롤백 검색)을 원했으나 Konsole을 설치하지 않으려고 WezTerm을 설치함. WezTerm은 즉시 마음에 들었으나, 많은 기능이 잘 발견되지 않음. 문서는 매우 좋고, 저자는 매우 참여적이고 도움이 됨

    • 예를 들어, 키보드만으로 큰 텍스트 블록을 선택하는 방법을 찾아서 한 번 해봤으나, 금방 잊어버리고 다시 마우스로 텍스트를 선택하게 됨. 문서 페이지를 다시 검색하는 것보다 빠름
    • 참고로, 찾고 있던 페이지는 https://wezfurlong.org/wezterm/copymode.html임
  • Mac Terminal, iTerm2, Kitty, Warp 등을 시도해봤으나 WezTerm에 정착함. 설정이 쉽고, 빠르고, 보기 좋음. 테마도 만들었음

  • WezTerm의 장점은 무엇인가? WezTerm은 완전히 크로스 OS를 지원하여 Linux, macOS, Windows에서 모두 사용할 수 있음. 터미널 설정을 여러 OS에서 공유함

  • WezTerm을 약 1년 동안 사용 중이며, GitHub에서 Wez를 후원하고 있음. WezTerm은 훌륭한 터미널이며, 개발자도 훌륭함. 빠른 복사 및 기타 복사 모드를 자주 사용함

    • MacOS 노트북에서 작업용 Linux 머신으로 mosh+tmux와 같은 기능을 사용함. 항상 세션을 실행하여 Mac에서 작업 머신에서 작업할 수 있음. 재연결 가능한 세션과 패널, 탭을 제공함
  • iTerm2를 계속 사용하는 이유는 "Edit->Selection Respects Soft Boundaries" 기능 때문임. 이 기능은 파이프 문자 |를 패널 구분자로 해석하여 선택이 그에 따라 감싸짐

  • 다른 사용자들의 의견에 동의함. macOS를 사용하기 시작한 지 거의 10년이 되었고, iTerm2를 사용해왔음. 최근 느려지기 시작했음. cmd-tab을 할 때 터미널이 나타나기까지 1초 이상 기다려야 했음

    • 여러 대안을 평가했으나 마음에 들지 않았음. 한 터미널은 계정/로그인이 필요했고, 다른 하나는 {Java,Type}Script로 작성되어 간단한 명령어도 비동기 스트림 문제로 인해 깨짐
    • WezTerm은 매우 빠르고, 설정 가능하며, 기본적으로 OneDark (base16) 테마를 제공함
    • 초기 설정 시 cmd-left와 cmd-right를 lua 설정에 추가해야 했음
  • Wez는 Rust로 시스템 프로그래밍에 관한 책을 출간할 예정임

  • OT: HashiCorp 창립자가 만든 Ghostty에 가장 기대됨