알아두면 도움되는 iTerm2 고급기능

궁극의 Mac Terminal Client

Harry The Great
해리의 유목코딩

--

OSX에서 터미널 작업을 하다 보면 iTerm2를 많이 사용하게 됩니다. 기본 편집기와는 비교되는 막강한 기능들이 많은데 설정이 너무 복잡하여 그냥 지나치는 경우가 많습니다. 누가 알려주거나 직접 찾아보지 않는 한 알기 어려울법한 기능들에 대해 소개해보겠습니다.

Smart Selection

Smart Selection은 regex에 매칭 되는 텍스트를 선택했을 때 발생되는 이벤트를 정의할 수 있습니다. 먼저 간단한 예시를 설정해보겠습니다.

[설정창] -> [Profiles] -> [Advanced]에서 Smart Selection 섹션의 [Edit]버튼을 클릭합니다.

기본값으로 미리 정의되어있는 규칙들이 출력됩니다. 정규식(Regex)에 발생되는 이벤트를 추가할 수 있으며 정규식이 겹칠 경우 Precision으로 우선순위를 정합니다. HTTP URL를 선택하고 하단 [Edit Actions…]를 클릭합니다.

다시 하단 플러스 버튼을 클릭합니다.

원하는 이름(title)을 준 후 Action에 [send text…]를 선택하고 파라미터로 [클릭한주소 : \0]을 입력하고 ok버튼을 클릭합니다.

일치하는 파라미터가 여러개라면 \1 ~ \9로 받게됩니다.

이제 URL 텍스트에 Cmd + 클릭을 하게되면 우리가 정의한 액션이 실행됩니다. 만약 다른정규식이나 클릭과 겹쳐 선택이 잘 되지않는다면

텍스트를 선택한 후 오른쪽 클릭을 누르면 설정한 이벤트 목록을 볼 수 있습니다. 응용할 수 있는 부분이 상당히 많은데 juliacat의 Wiki 페이지에있는 Github 커밋과 관련한 Selection Rules도 좋은 예인것같습니다.

Trigger

Smart Selections 바로 위에 있는 Triggers는 선택할 필요 없이 텍스트가 정규식에 일치될 때 실행되는 이벤트입니다.

패스워드 매니저가 실행되는 간단한 예를 들어보겠습니다. [Edit]버튼을 클릭한 후 하단 플러스 버튼을 클릭합니다.

  • Regular Expressions:Password:
  • Actions: Open Password Manager
  • Instant: 체크

위와 같이 이벤트를 주고 나면 비밀번호를 물어보는 텍스트가 감지되면 바로 Iterm2의 패스워드 매니저가 실행됩니다. Password Manager 기능은 Iterms에 서 비밀번호 등을 저장하는 게 다소 염려되어 사용해보지는 않았습니다 (…)

Status Bar

터미널에 시스템과 관련한 추가적인 정보나 단축버튼 등을 만들 때 유용합니다.

설정에따라 상단 혹은 하단으로 위치를 변경할수 있습니다.

터미널에 CPU 사용량, Ram 사용량 등 시스템 정보나 커스텀 메뉴를 넣을 수 있는 옵션입니다. [Profiles] -> [Sessions]에서 메뉴 하단 Status Bar Enabled를 체크하고 [Configure Status Bar] 버튼을 클릭합니다.

기본 설정들 이외에도 Call Script Function로 함수를 실행할 수 있고 Custom Action으로 Iterms와 관련한 화면변경, 프로필변경과같은 액션들을 추가할 수 있습니다.

Pointer Action

[Pointer] -> [General] or [Bindings]

Pointer Actions은 [General] 탭을 확인하면 몇 가지 기본 옵션들을 제공하고 있습니다.

포인터가 보이지않아.. 설명드리면 ls로 출력된 파일명을 Cmd + Click하는 이벤트입니다.

Cmd + click으로 파일이나 폴더를 클릭하여 열거나 Cmd + URL을 클릭하면 링크를 브라우저로 열게 됩니다. 고오오오오급 기능 소개인만큼 바로 Bindings로 넘어가 커스텀 액션을 만들어보겠습니다.

Binding 메뉴에서는 직접 마우스 이벤트를 커스터마이징 할 수 있습니다. 예를 들어 하단 플러스 버튼을 눌러 미리 보기 이벤트를 추가해보겠습니다. 하단 플러스 버튼을 클릭합니다.

오른쪽마우스 + Ctrl 옵션을 주었을 때 QuickLook이 실행되도록 하고 [OK]를 클릭합니다.

이제 ls 명령어로 파일들을 출력하고 Ctrl + 오른쪽클릭을 누르게되면 미리보기가 실행됩니다. Pointer의 Binding 옵션 역시 다양한 액션들을 지원합니다.

비쥬얼 비프

시스템 비프음이 짜증날때 좋습니다. [Profile] -> [Terminal]에서 Notification 섹션으로 이동합니다.

Silence Bell 옵션으로 소리가 안나게 한 후 Flash Visual Bell 옵션을 선택합니다. Notification Center Alerts로 설정하면 OSX의 Notification으로 알려주게됩니다.

Shell Intergration

Iterm과 쉘과 통합시켜 더 많은 기능들을 제공합니다. 먼저 활성화시키기위해서는 추가적인 스크립트를 다운받아야합니다.

설치법

#스크립트를 다운받습니다.
curl -L https://iterm2.com/shell_integration/zsh \ -o ~/.iterm2_shell_integration.zsh
#다운받은 스크립트를 실행합니다.
source ~/.iterm2_shell_integration.zsh

자동추천기능

  • 자동완성: shift + cmd + ;
  • 최근 디렉토리 히스토리: Cmd-Opt-/

명령어를 입력할때마다 하단 Hint가 계속 보여지는데 끄려고한다면 아래 순서대로 해야합니다.

  • [General] -> [Masic] -> copy/paste and command history to disk 해제
  • OSX 상태바의 [Toolbelt] -> [Command History]를 선택 후 -> [Clear All]

Toolbelt의 History, Recent Directory

iTerms의 상태바에서 [Command History], [Recent Directory]를 사용할 수 있습니다.

하단 자동완성 힌트를끄고싶다면 설정메뉴에서 View > Auto command completion를 체크해하면됩니다.

Smart Selection + Copy

General -> Selection

copy to pasteboard on select과 Double-Click performs smart selection을 체크하면 더블클릭하는 텍스트들이 복사가 됩니다. 저처럼 기본 옵션인 word chunk 단위로 하셔도 좋고 원한다면 하단 characters considered part of a word 옵션을 이용해 변경할수도 있습니다.

Profile Switching

[Profiles] -> [Advanced] 최 하단에 위치한 메뉴입니다. 마찬가지로 쉘 통합 스크립트가 실행되어야 사용 가능하며 hostname이나 username에 따라 프로필을 변경할 수 있습니다.

[Profiles] -> [Advanced] 최 하단에 위치한 메뉴입니다. 마찬가지로 쉘 통합 스크립트가 실행되어야 사용 가능하며 hostname이나 username에 따라 프로필을 변경할 수 있습니다.

예를 들어 원격 서버를 위한 별도의 백그라운드를 출력하여 로컬 쉘과 헷갈리는 문제들을 해결할 수 있습니다. 또 이외에도 원격 쉘들의 Syntax 등을 위해 별도의 색상을 적용할 수 있습니다.

Capture Output

원하는 결과들을 별도로 저장할 수 있습니다. 마찬가지로 쉘 통합이 되어있어야 하며 이전 Trigger 메뉴에서 새로운 트리거를 생성해야합니다.

원하는 정규식을 입력한 후 Actions으로 Capture Output을 선택하면 됩니다.

마찬가지로 Toolblet -> Capture Output을 선택하여 활성화시킬 수 있습니다.

마치며

각각 주제를 잡고 설명한 기능들도 옵션들이 너무많아 피상적으로만 설명하였는데 각각에 맞게 커스터마이징한다면 더 훌륭한 터미널 클라이언트가 될 수 있습니다. 특히 원격셀에서 작업을 해야하거나 도커 컨테이너의 쉘에서 디버깅 한다거나할때 출력되는 Text에 기반하여 액션들을 실행시킬 수 있기때문에 더욱 유용한것같습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.