프론트엔드 개발자의 Mac M1 초기 설정

저의 Mac 초기 설정을 정리한 글입니다.
설치가 필요한 경우 가능한 homebrew로 설치하는 방식으로 소개하고 있습니다.


Mac 기본 설정

  • Dock 아이콘 전부 제거
  • Launcpad 기본앱 정리하기
  • Finder → 보기 → 경로 막대 보기

시스템 환경설정

  • Dock 및 메뉴 막대 → 자동으로 Dock 가리기와 보기 [x]
  • Dock 및 메뉴 막대 → Dock에서 최근 사용한 응용 프로그램 보기 [ ]
  • Mission control → Space 최근 사용 내역 자동 재정렬 [ ]
  • 손쉬운 사용포인터 제어기트랙패드 옵션드래그 활성화[x] → 세 손가락 드래그하기 (추천)
    • 드래그할 때 힘들게 꾹 누를 필요 없이 세 손가락으로 드래그할 수 있습니다.
  • 키보드키보드 → 🌐 눌러 다음 실행 [동작 없음]
  • 키보드키보드 → F1, F2 등의 표준 기능 키로 사용 [x]
  • 키보드단축키Spotlight → Spotlight 검색 [잘 사용 안하는 단축키로 변경]
  • 키보드단축키Spotlight → Finder 검색 윈도우 [사용안함]
  • 키보드입력 소스 → 한/A 키로 ABC 입력 소스 전환 [ ]
    • 저는 한/A을 control로 바꿔 사용하고 있습니다.
  • 배터리배터리, 전원 어댑터디스플레이 끄기 [안함 or 3시간]

Homebrew

Homebrew는 명령어로 라이브러리, 소프트웨어 등을 복잡한 과정 없이 설치, 업데이트, 삭제 등의 관리를 손쉽게 할 수 있는 macOS 패키지 관리자입니다. macOS 로컬 개발 환경을 설정하는 데 필요한 필수 도구입니다.

설치

01. Xcode Command Line tools 설치

$ xcode-select --install

02. Homebrew 설치

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

03. PATH 추가

설치가 완료되면 마지막에 다음과 같은 메시지가 나옵니다.

==> Next steps:
- Add Homebrew to your PATH in /Users/<USER_ID>/.zprofile:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<USER_ID>/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

다음 코드를 터미널에 입력합니다.

$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<USER_ID>/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"

iTerm2

iTerm2는 분할 창, 검색, 다양한 설정 등 기본 터미널보다 다양한 기능을 제공하는 터미널 앱입니다. 저는 MacOS의 기본 터미널 대신 iTerm2를 사용하고 있습니다.

설치

$ brew install --cask iterm2

커스터마이징

  • PreferencesAppearenceTheme → Minimal 선택

iTerm2 minimal setting

  • PreferencesProfilesColors → 원하는 color 또는 scheme 설정

iTerm2 color/scheme setting

  • PreferencesProfilesWindowsTransparency, Blur 설정

iTerm2 transparency/blur setting

  • PreferencesProfilesSession → Status bar eneabled [x]

iTerm2 status bar setting

cmd/option + arrow 사용하기

기본적으로 iTerm2에서는 단어 단위 이동(option + arrow), 맨 처음, 맨 끝 이동(cmd + arrow) 등이 동작하지 않습니다. 아래와 같이 설정하면 cmd/option + arrow 사용할 수 있습니다.

  • PreferencesProfilesKeysKey MappingsPresets → Natural Text Editing 선택

iTerm2 key mappings

Oh My Zsh

macOS ‘카탈리나’부터 기본 쉘이 bash에서 zsh로 변경되었습니다.

Oh My Zsh는 zsh 구성을 관리할 수 있는 프레임워크로 수많은 플러그인과 테마를 지원합니다.

설치

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

설치가 완료되면 아래와 같은 메시지가 나옵니다.

oh my zsh initial screen

zsh 플러그인

제가 사용하고 있는 zsh 플러그인입니다.

zsh-autosuggestions

zsh-autosuggestions는 명령어를 입력할 때 히스토리 기반으로 명령어를 제안하는 플러그인입니다.

zsh-autosuggestions

설치

$ brew install zsh-autosuggestions

.zshrc 맨 아래에 다음 코드를 추가합니다.

source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh

zsh-syntax-highlighting

zsh-syntax-highlighting은 쉘에 대한 구문 강조 표시를 제공하는 플러그인입니다.

  • 사용할 수 있는 명령어

zsh-syntax-highlighting command available

  • 사용할 수 없는 명령어

zsh-syntax-highlighting command not available

설치

$ brew install zsh-syntax-highlighting

.zshrc 맨 아래에 다음 코드를 추가합니다.

source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

fasd

fasd는 명령줄 생산성 향상 플러그인입니다.

파일 및 디렉토리에 대한 빠른 액세스를 제공합니다. 많은 기능을 제공하지만 저는 주로 z 명령어를 제일 많이 사용합니다. z 명령어는 가장 많이 접근한 디렉토리 또는 입력된 텍스트와 매칭되는 디렉토리 이동합니다.

fasd

설치

$ brew install fasd

.zshrc 플러그인에 fasd를 추가합니다.

...
plugins=(
  git
  fasd  # <- 추가
)
...

jq

jq는 JSON 프로세서입니다.

JSON 포맷의 데이터를 커맨드라인에서 필요한 정보를 추출하고 편집하는 등의 작업을 간단하게 수행할 수 있는 기능을 제공합니다. 저는 사용하는 경우가 드물지만, 가끔 커맨드라인에서 JSON 데이터를 보는 경우 사용합니다.

  • JSON 데이터 출력

JSON default output

  • jq를 사용하여 JSON 데이터 출력

JSON jq output

설치

$ brew install jq

bat

bat은 파일 내용을 출력하는 플러그인입니다

구문 강조, 깃 통합 등 다양한 기능이 있어 기본 명령어 cat 대체해서 사용하기 좋습니다.

  • cat

cat

  • bat

bat

설치

$ brew install bat

powerlevel10k

powerlevel10k는 zsh 쉘 프롬프트입니다.

대부분 기능이 비동기로 작동하기 때문에 속도가 굉장히 빠릅니다. 다른 프롬프트를 사용하면서 로딩이 오래 걸렸던 경험이 있으면 사용해보세요.

설치

$ brew install powerlevel10k

설치 후 안내 메시지에 따라 .zshrc에 다음 코드를 추가합니다.

# ZSH_THEME="robbyrussell" <- 기존 테마는 주석처리 해주세요.
# powerlevel10k theme
source /opt/homebrew/opt/powerlevel10k/powerlevel10k.zsh-theme

source ~/.zshrc 또는 터미널을 재시작하면 설정 안내 메시지가 나옵니다. 입맛에 맞게 설정하시면 됩니다.

powerlevel10k initial screen

Karabiner

Karabiner는 macOS 키보드 커스터마이징을 손쉽게 할 수 있는 유틸리티 앱입니다.

설치

$ brew install --cask karabiner-elements

Simple modifications

특정 키 입력을 다른 키 입력으로 바꿀 수 있습니다.

caps lock을 control로 사용하기

karabiner Simple modifications

Complex modifications

저는 karabiner의 Complex modifications를 사용하여 몇 가지 키 조합을 사용하고 있습니다. complex rule 생성하기를 통해 rule을 생성할 수 있습니다.

right_command + hjkl으로 방향키 사용하기

right_command + hjkl

right_command + tab으로 caps lock 사용하기

// rule
{
  "description": "right_command + tab to caps_lock",
  "manipulators": [
    {
      "from": {
        "key_code": "tab",
        "modifiers": {
          "mandatory": [
            "right_command"
          ],
          "optional": [
            "any"
          ]
        }
      },
      "to": [
        {
          "key_code": "caps_lock"
        }
      ],
      "type": "basic"
    }
  ]
}

right_command + backspace으로 delete forward 사용하기

// rule
{
  "description": "right_command + backspace to delete_forword",
  "manipulators": [
    {
      "from": {
        "key_code": "delete_or_backspace",
        "modifiers": {
          "mandatory": [
            "right_command"
          ],
          "optional": [
            "any"
          ]
        }
      },
      "to": [
        {
          "key_code": "delete_forward"
        }
      ],
      "type": "basic"
    }
  ]
}

Git

macOS는 기본적으로 git이 설치되어 있지만 최신버전을 사용하기 위해 설치합니다.

설치

$ brew install git
$ git --version

nvm

nvm은 node.js 버전 매니저입니다.

여러 node.js 버전을 손쉽게 관리할 수 있는 도구입니다.

설치

$ brew install nvm
$ mkdir ~/.nvm # <- nvm 폴더 생성

.zshrc 맨 아래에 PATH 추가

# PATH는 다 다를 수 있으니 nvm 설치 후 나오는 안내 메시지를 참고하세요.
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

node.js 설치 및 사용

$ nvm ls=remote --lts      # <- 설치 가능한 node.js LTS 버전 원격 목록 확인
$ nvm install node --lts   # <- node.js LTS 최신 버전 설치
$ nvm use --lts            # <- node.js LST 최신 버전 사용

$ nvm ls                   # <- 설치된 node.js 목록 확인
$ npm -v                   # <- npm 버전 확인

저는 v16 LTS(최신), v17.9.0 이렇게 사용하고 있습니다.

Yarn

Yarn은 node.js 패키지 매니저입니다.

설치

node.js v16.10 이상 버전부터는 Corepack이라는 패키지 관리자 버전을 관리하는 도구가 포함되어 있습니다. Corepack을 사용하면 Yarn을 사용할 수 있습니다.

node.js v16.10 미만 버전는 npm i -g yarn 으로 설치할 수 있습니다.

$ corepack enable          # <- corepack 활성화

$ yarn -v                  # <- yarn 버전 확인
$ yarn set version stable  # <- yarn 최신버전 업데이트

yarn global 설정하기

$ yarn global bin        # <- yarn global bin 경로 확인
$ yarn config get prefix # <- yarn 접두사 확인

# yarn global bin 경로에서 bin 상위 디렉토리 경로를 접두사 설정 ex) /Users/username/.yarn
$ yarn config set prefix [yarn global path] # <- yarn 접두사 설정 

Alfred

Alfred는 macOS용 생산성 앱입니다.

macOS의 Spotlight와 유사한데 훨씬 많은 기능을 제공하고 있습니다. 잘 사용하면 엄청난 생산성을 제공해 주지만, 저는 주로 파일 실행 및 찾기, 맞춤법 검사, 네이버/구글 검색, 네이버 영어사전, 구글 번역 등 간단하게 사용하고 있습니다. 참고로 파워팩(라이선스)을 구매해야 모든 기능을 사용할 수 있습니다. 제가 사용하는 정도로는 무료로 가능할지도 모르겠습니다. 저는 돈값 못하게 사용하는 중입니다.

alfred

설치

$ brew install --cask alfred

설치 후 입 맛에 맞게 설정하세요.

Fig

Fig는 기존 터미널에 IDE 스타일의 자동 완성을 제공하고 커스텀할 수 있는 유틸리티 앱입니다.

zsh-autosuggestions와 비슷하지만, fig는 네트워크 요청을 통해 완성 스펙를 가져오기 때문에 훨씬 다양하고 영리한 자동 완성을 제공해줍니다. 앱 첫 로드 시 CDN에서 완성 스펙을 가져오고 로컬에서 동작합니다. 때때로 필요할 때 네트워크 요청을 합니다.

Fig는 몇 가지 정보를 수집한다고 합니다. 사용하시기 전에 Fig Privacy를 확인하시기 바랍니다.

fig

설치

$ brew install --cask fig

OpeninTerminal-Lite, OpeninEditor-Lite

OpeninTerminal-Lite, OpeninEditor-Lite는 Finder의 현재 디렉토리 위치에서 터미널 및 편집기를 바로 열 수 있는 유틸리티 앱입니다.

OpeninTerminal-Lite, OpeninEditor-Lite

Visual Studio Code, Chrome

저는 개발할 때 vsocde를 사용하고 있고 크롬 웹 브라우저 사용하고 있습니다.

$ brew install --cask visual-studio-code
$ brew install --cask google-chrome

개인적으로 추천하는 앱

BetterTouchTool (유료)

BetterTouchTool는 단축키, 트랙패드, 마우스 등 각종 커스터마이징을 지원하는 유틸리티 앱입니다. 저는 주로 단축키 앱 실행과 트랙패드 제스처 기능을 사용하고 있습니다.

Margnet (유료)

Margnet은 화면분할을 쉽게 할 수 있게 단축키 및 기능을 제공하는 유틸리티 앱입니다.

Margnet

Hiden Bar

Hidden Bar는 메뉴 막대의 항목을 숨겨서 보다 메뉴 막대를 깔끔하게 만들어 주는 앱입니다.

Hidden Bar

AppCleaner

AppCleaner는 앱 삭제 시 캐시 및 임시 파일까지 깔끔하게 같이 삭제해주는 유틸리티 앱입니다

AppCleaner

Flow

Flow는 뽀모도로 타이머 앱입니다. 개인적으로 뽀모도로 앱 중에 가장 깔끔하고 필요한 기능만 있다고 생각합니다.

스크린샷 2022-05-02 13.52.21.png

원화(₩)를 백틱(`)으로 사용하기

마크다운 작성을 하거나 JS로 개발할 때 백틱(`)을 많이 사용합니다. 입력 소스가 한글로 되어 있으면 백틱(`) 대신 원화(₩)가 입력되는데 여간 불편한 게 아닙니다. DefaultkeyBinding 수정을 통해 원화(₩)를 백틱(`)으로 사용할 수 있습니다.

~/Library/KeyBindings/Defaultkeybinding.dict에 아래 코드를 입력하세요.

karabiner로 설정하면 한글일 떄 vscode 터미널 토글 단축키가 작동하지 않습니다.
option + 4로 원화(₩)를 사용할 수 있습니다.

{
    "₩" = ("insertText:", "\`");
    "~4" = ("insertText:", "₩");
}

키 바인딩 관련 정보는 여기를 참고하세요.