리눅스(또는 맥북) 터미널을 익숙하게 쓰면서도 동시에 꽤나 불편하게 써왔다는 것을 깨달았습니다. 격투게임에서 필살기를 쓰면 한번에 많은양의 피를 깎을 수 있으면서도, 복잡한 커맨드를 외우기 어려워서 평타만 치면서 찔끔찔끔 깎고 있었다고 하면 좋은 예시가 될지 모르겠습니다. 관성이라는 것은 사람의 발전을 해치고는 합니다.
설치
아무튼 이번에 맥북 m1 기본 터미널을 iterm2로 업그레이드 하면서 새로 공부한 내용을 정리해 보려고 합니다. 별 생각없이 다들 많이 쓴다고 하길래 터미널 앱은 iterm2로, 기본 shell은 zsh로 변경했는데 그게 이후로의 고난에 시작이 될 줄은 몰랐습니다. iterm2의 편리한 기능부터 확인하시고 설치를 고민하시기를 바랍니다. [1]
간단하게 정리해드리면
- 창을 수직 또는 수평으로 분할하기
- 단축키로 등록하여 터미널 최상단으로 가져오기
- 검색기능
- 자동완성기능
- 키보드와 마우스를 사용한 텍스트편집
- 여러가지 옵션을 통해 터미널 설정하기
- 트리거 설정
등등이 있습니다. 설치는 홈페이지에서 가능합니다. https://ooeunz.tistory.com/21
그리고 디폴트 쉘 환경을 bash에서 zsh로 변경하도록 하겠습니다. zsh 쉘은 다음과 같은 장점을 가지고 있습니다.
- bash와 호환가능
- 플러그인 서치 가능
- 자동완성 기능
- 여러가지 테마 설정 기능
설치는 다음과 같이 진행해주세요.
아직 맥의 패키지 관리자인 brew가 안 깔려있을 경우에는 홈페이지 https://brew.sh/에 가서
위의 설치 curl을 복사해서 터미널에 붙여넣기해서 설치합니다.
그리고 homebrew로 zsh를 설치하고 디폴트 쉘로 변경합니다.
$ brew install zsh
$ chsh -s $(which zsh)
zsh 설정 관리 프레임워크인 oh-my-zsh를 홈페이지 https://ohmyz.sh/#install에 가서
역시 위의 설치 curl을 복사 붙여넣기해서 설치합니다.
iterm2와 zsh를 설치했다면 이제 터미널을 예쁘게 커스텀해보도록 하겠습니다. 저는 이런 모양으로 커스텀해서 사용하고 있습니다.
커스텀에 대한 건 이 블로그[2]에서 너무 잘 설명해주셨기 때문에 넘어가고, bash셸에서 zsh로 넘어가면서 바뀐 환경설정 또는 주의해야할 점에 대해서 정리하려고 합니다.
아키텍쳐 설정
커스텀까지 마치고 흐뭇하게 터미널을 보고 있었는데, 터미널을 바꾸기 전까지는 잘 실행되던 것들이 오류가 나기 시작합니다. 첫번째로 jekyll 정적 사이트 생성기로 이 블로그를 만들었는데, 블로그를 로컬서버에서 돌리기 위한 jekyll serve 명령어가 듣지 않았습니다.
서치해서 나온 해결방법은 다음과 같았습니다.
- iTerm 아이콘 우클릭 > 정보 가져오기 > Rosetta로 실행
- ruby 재설치 또는 bundle 재설치
여기에서 Rosetta는 Inter 프로세서가 장착된 Mac용으로 제작된 앱을 Apple Silicon이 장착된 Mac에서 사용할 수 있게 해주는 앱입니다. 하지만 오류는 여전했고, 저는 오류 로그의 -have ‘arm64’, need ‘x86_64’ 문구를 힌트로 얻어 다음과 같이 문제를 해결했습니다.
$ arch -arm64 jekyll serve
여기에서 arch는 architecture의 약어로 시스템의 아키텍쳐를 의미합니다. arch 명령어를 사용하면 실행한 터미널 환경과 상관없이 특정 아키텍쳐로 앱을 실행할 수 있게 됩니다. [3] 즉, 위의 명령어는 arm64 아키텍쳐로 jekyll 서버를 실행한다는 의미가 됩니다. 참고로 Intel 프로세서 아키텍쳐는 x86_64이고 Apple Silicon M1은 arm64입니다. 이를 바탕으로 왜 이런 오류가 났는지 원인을 찾아보자면
먼저 iterm2의 아키텍쳐를 확인해봅시다.
Inter x86_64로 나옵니다.
기본 터미널에서 아키텍쳐를 확인하면
arm64로 나옵니다.
기본 터미널에서 먼저 arm64 아키텍쳐로 jekyll을 다운받았기 때문에 iterm2로 jekyll 서버를 실행할때 역시 arm64로 해야하는 것이었습니다. 저와 같은 상황이신분이 있다면 꼭 아키텍처를 염두에 두시기를 바랍니다.
단축키
iterm2의 단축키에 대해 정리해보려고 합니다. 단축키를 외우는게 당장은 귀찮을지 모르지만, 나중에 터미널을 여러개 띄워두고 복잡한 작업을 해야할 때는 훨씬 효율적인 개발을 할 수 있을 것입니다. 예전에 TCP 분산서버 동시접속 테스트 위해 putty 창 5개를 띄워놓고 했던 때가 떠올랐습니다. 그 때도 지금보다 더 좋은 방법은 없을지 부지런히 찾아보고 공부해보면서 개발했더라면 그런식으로 하지는 않았을것 같습니다.
참고로
이거 하나는 창,
이건 각각 탭이고,
이건 각각 Pane(틀)입니다.
창/탭/Pane 컨트롤
- 새 창 :
Cmd + N
- 새 탭 :
Cmd + T
- 창 세로분할 :
Cmd + D
- 창 세로분할 :
Cmd + D
- Pane 닫기 :
Cmd + W
- 창 닫기 :
Cmd + Shift + W
- 전체 창 닫기 :
Cmd + Shift + Opt + W
- 탭 닫기 :
Cmd + Opt + W
- 숨기기 :
Cmd + H
- 현재 창 최소화 :
Cmd + M
- 모든 탭 모든 Pane 동시에 입력 :
Cmd + Shift + I
- 현재 탭 모든 Pane 동시에 입력 :
Opt + Cmd + I
- 다음 Pane으로 :
Cmd + ]
- 이전 Pane으로 :
Cmd + [
- 탭 순차 이동 :
Control + tab
- 다음 탭으로 :
Cmd + Shift + ]
- 이전 탭으로 :
Cmd + Shift + [
- 이전 탭으로 :
Cmd + Shift + [
입/출력
- 복사 :
Cmd + C
- 붙여넣기 :
Cmd + V
- 전체 선택 :
Cmd + A
- 전체 검색 :
Cmd + Option + E
- 검색 :
Cmd + F
- 검색(다음으로) :
Cmd + G
- 검색(이전으로) :
Cmd + Shift + G
- clear :
Cmd + K
- 클립보드 :
Command + Shift + H
- 자동완성 :
Command + ;
- 작업시간 보여주기 :
Command + Shift + E
커서 이동
- 커서 좌로 이동 :
Ctrl + B
- 커서 우로 이동 :
Ctrl + F
- 커서 좌측 끝으로 이동 :
Ctrl + A
- 커서 우측 끝으로 이동 :
Ctrl + E
- 현재 단어 좌측 끝으로 커서 이동 :
ESC + B
- 현재 단어 우측 끝으로 커서 이동 :
ESC + F
- 현재 커서의 우측 문자 삭제 :
Ctrl + D
- 현재 커서 위치부터 맨 끝까지 삭제 :
Ctrl + K
- 전체 삭제 :
Ctrl + U
- 현재 커서 좌측 단어 삭제 :
Ctrl + W
- 현재 커서 우측 단어 삭제 :
ESC + D
- 현재 커서의 단어와 좌측의 단어의 위치를 변경 :
ESC + T
iterm 사용하면서 의식적으로 단축키를 입력해가면서 외워보도록 합시다. 이번 포스팅은 여기서 마치도록 하겠습니다. 다들 멋지고 즐겁게 개발하시길 바랍니다!
1. https://iterm2.com/features.html
2. https://ooeunz.tistory.com/21
3. https://subicura.com/mac/dev/apple-silicon.html#apple-silicon-m1