알아두면 도움되는 iTerm2 고급기능
궁극의 Mac Terminal Client
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] 탭을 확인하면 몇 가지 기본 옵션들을 제공하고 있습니다.
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에 기반하여 액션들을 실행시킬 수 있기때문에 더욱 유용한것같습니다.