Search

Mac OS X

Created
2021/03/23 01:51

Subjects

1. 시스템 환경설정

맥 디스플레이의 최상단에는 Command Bar가 있다. Command Bar의 최좌측에 사과 모양을 누르면 시스템 환경설정을 열 수 있다.

1) 트랙패드

시스템 환경설정트랙패드를 연다.

탭하여 클릭하기

포인트 및 클릭 탭의 탭하여 클릭하기를 을 활성화하면, 트랙패드를 꾹 누르지 않고 가벼운 터치만으로 클릭을 할 수 있다.

두 손가락으로 클릭 또는 탭하기

포인트 및 클릭 탭에서 보조 클릭두 손가락으로 클릭 또는 탭하기를 설정하면, 트랙패드에 두 손가락 터치만으로 우클릭을 입력할 수 있다.

스크롤 방향: 자연스럽게

스크롤 및 확대/축소 탭의 스크롤 방향: 자연스럽게비활성화하면 트랙패드 스크롤 시에 윈도우처럼 스크롤 할 수 있다. (개인적으로 비추천)

2) 손쉬운 사용

시스템 환경설정손쉬운 사용으로 이동한다.

세 손가락으로 드래그하기

포인터 제어기에서 트래패드 옵션을 누르면 드래그 활성화세 손가락으로 드래그하기를 선택한다.
세 손가락으로 트랙패드 이용 시 쉽게 드래그 되므로 일일이 트랙패드를 누를 필요가 없어진다.

3) 키보드

시스템 환경설정키보드로 이동한다.

키 반복 및 반복 지연 시간

아래와 같이 빠르게짧게를 최대치로 설정하면 빠른 키 입력으로 답답함을 줄일 수 있다.

단축키의 입력 소스

이 글을 읽는 독자가 tmux를 이용할지는 모르겠지만, 터미널 상에서의 tmux는 준 필수이다. tmux를 이용할 때는 단축키 prefix를 이용하게 되는데 내 경우에는 이 단축키 prefix 설정을 바꿔서 이용한다. ctrl + space라는 prefix로 설정하여 이용하는 상황에서 이전 입력 소스로 변경하는 ctrl + space와 겹치게 된다. 이를 사용하지 않도록 아래 그림처럼 체크 해제한다.

4) 일반

시스템 환경설정일반으로 이동한다.

화면 모드

아래와 같이 라이트모드다크모드를 고를 수 있다. 자동으로 두면, 일출 혹은 일몰 시간에 맞춰 모드가 바뀐다.

2. 유료 / 무료 응용 프로그램

1) CleanMyMac X

Mac OS X에서 사용되는 대부분의 리소스를 컨트롤 할 수 있다. 유료이며 App Store 혹은 MacPaw 사이트에서 구매할 수 있다.
구매처에 따라 라이센스가 다르기 때문에 AppStore에서 구매하고서 MacPaw를 통해 다운로드 받으면 라이센스가 인증이 안 된다. 반대로 MacPaw에서 구매하고 AppStore에서 다운로다 받아 라이센스 인증을 받아도 오류가 발생한다.

2) PopClip

다양한 플러그인 (예를 들면, 번역 및 하이라이팅 등의 외부 플러그인) 등을 텍스트 드래그 시 손쉽게 이용할 수 있는 어플리케이션이다.

3) Magnet

여러 단축키를 이용하여 화면 분할 기능을 제공한다. Spectacle 등 유사 무료 프로그램이 있지만, 돈을 내고 사용할만큼 충분한 가치가 있다고 생각한다. Command BarMagnet 아이콘을 열면 단축키 확인이 가능하다.

4) Grabit

cmd + option + b 로 지정 캡쳐를 실행할 수 있다.
참고로 맥 전체 화면 캡쳐는 cmd + shift + 3 + space이고, 현재 화면 캡쳐는 cmd + shift + 4 + space이다. Grabit을 이용하면 편리하게 캡쳐가 가능하고, 캡쳐 즉시 클립보드에 복사할 수 있도록 환경설정이 가능하다.

5) Yoink

파일을 드래그 앤 드롭을 수행할 때 임시 거처로 이용할 수 있도록 공간을 제공한다. 매번 여러 파일을 옮길 때 한 번에 선택해서 꾹 누른 채로 탭 전환했던 것이 불편하다면 이를 해결할 수 있는 프로그램이다.

6) Paste

클립보드 내용을 저장하고 내용에 따라서 자동으로 분류한다. 분류한 항목들에 따라서 Preview가 제공되기 때문에 색상에 대한 HexCode 복사 시 일일이 해당 색을 찾을 필요도 없고, 링크에 대한 Preview도 볼 수 있어서 어떤 링크를 복사한 것인지도 볼 수 있다. 항목들을 중 하나를 다시 복사하면 클립보드의 내용을 활용할 수도 있다.

7) iStat Menus

맥에서 기본으로 제공해주는 활성 상태 보기를 이용할 수 있지만, iStat Menus를 이용하면 맥에 있는 다양한 센서 정보들도 확인할 수 있다. 또한 Command Bar에서 아이콘으로 확인할 수 있게 된다.

8) Karabiner-Elements

윈도우처럼 우측 하단의 cmd한영 전환 키로 이용할 수 있도록 도와준다.
사실 쓰다보면 tab이 더 손이 잘 가니까 그냥 Mac OS X 단축키에 익숙해지는게 더 낫긴하다.

3. Mac OS X 단축키

cmd + , : 대부분의 프로그램에서 옵션 창을 연다.
cmd + q : 현재 대상의 프로그램을 완전히 종료한다.
cmd + tap : 실행 중인 프로그램 목록을 간단하게 띄우면서 전환할 수 있다.
cmd + ` : 실행 중인 동일 프로그램의 전환을 돕는다.
cmd + h : 현재 보고 있는 창을 숨긴다.
cmd + m : 현재 보고 있는 창을 최소화한다.
cmd + w : 현재 실행 중인 탭을 닫는다. (프로그램은 살아 있음)
cmd + shift + t : 닫은 탭을 다시 연다.
cmd + 숫자 : 열려 있는 탭 순서에 맞게 이동한다.
cmd + t : 새 탭을 만든다.

4. 설치해야 할 것들

1) gcc, g++

Xcode를 이용하여 편리하게 설치할 수 있다. App Store를 열어 Xcode를 검색한 뒤 설치한다. iTerm2를 열어 gcc, g++ 명령어를 쳐본다. 이 때 명령어를 찾을 수 없다고 한다면, 아래 명령어를 통해 Xcode에서 제공하는 Command Line Tools를 설치하여 해결할 수 있다.
Xcode는 설치에 시간이 오래 소요된다.
xcode-select --install

2) Homebrew

맥에서는 다양한 패키지를 설치하고 관리하는데 있어서 Homebrew를 많이 이용한다. 처음 맥을 이용할 때는 Homebrew가 설치되어 있지 않기 때문에 별도로 설치해줘야 한다. 맥에 기본적으로 Terminal이라는 응용 프로그램이 설치되어 있기 때문에, Terminal을 열어 아래의 명령어를 입력하여 설치한다.
HomebrewRuby기반으로 만들어진 Mac OS X 용 패키지 관리자이다. 패키지 관리자는 맥에 설치되는 패키지의 설치, 삭제, 업그레이드, 의존성 관리 등을 도와주는 도구로, 개발에 필요한 프로그램을 손쉽게 관리할 수 있게 해준다.

3) iTerm2

기본적으로 제공되는 Terminal보다 훨씬 강력한 기능들을 제공해주는 응용 프로그램이다. iTerm2를 이용하다가 Terminal로 돌아가보면 역체감을 많이 할 수 있다. 패키지 관리자 Homebrew를 설치했으므로 이를 이용하여 편리하게 설치할 수 있다.
brew install --cask iterm2

4) git

맥에는 기본적으로 git이 깔려 있는데, 설치했던 iTerm2를 열어 git을 쳐봤는데 명령어를 찾을 수 없다고 한다면 아래 명령어를 이용하여 설치한다.
brew install git

5) zsh & oh-my-zsh

zsh

맥의 Catalina부터는 Terminal의 기본 쉘이 zsh로 되어 있기 때문에 별도의 설치를 할 필요는 없지만, 혹시나 모르니 최신 버전으로 업데이트 해주자.
brew install zsh

oh-my-zsh

이어서 zsh의 설정을 관리해주는 Frameworkoh-my-zsh를 설치한다. oh-my-zsh를 통해 zsh에서의 여러 편리한 플러그인들을 쉽게 사용할 수 있다.
oh-my-zsh를 설치하면 자동으로 zshrc라는 zsh 설정 파일을 만들어준다.

6) 여러 brew package

Mac OS X에서 주로 사용하는 패키지들이다. 위에서 Homebrew를 설치했기 때문에 Mac OS X에서 주로 사용하는 패키지들의 관리는 brew를 통해서 수행할 수 있다.
아래 링크에서 필요한 패키지들을 설치할 수 있도록 하자. 적어도 이 글에서 필요로 하는 패키지들은 NeoVim, node.js이다.
또한 준 필수 패키지들은 Trash, tmux이며, 있으면 좋은 패키지는 fd, lsd가 되겠다.
필요에 따라 cpplint, docker, minikube, golang, mariadb, postgresql, jdk 등을 설치하면 되고, Git을 이용한 Commit에 서명을 하고 싶다면 gpg도 설치하면 된다.

4. NeoVim 환경설정

vim은 메모장과 같은 일반적인 텍스트 편집기와 크게 다르지 않다. 그럼에도 vim을 이용하는 이유는 코드 작성 시 유용한 플러그인들을 다수 이용할 수 있을 뿐 아니라, 자신이 자주 사용하는 키들에 대한 Mapping을 둘 수 있기 때문이다. 플러그인Mappingvimrc 파일에서 설정할 수 있으며, 아래에서 이들을 자세히 다뤄볼 것이다.
글을 수정하기 이전에는 순전히 vim을 이용했는데, 글을 수정하면서 NeoVim을 이용하도록 작성했다. vim은 꽤나 오래된 코드들로 이뤄져있고 유지 보수가 잘 안되는 만큼 최적화가 잘 되어 있지 않고, 따라서 많이 느리다. 현업에서 vim을 이용하려는 많은 개발자들은 성능이 우수하고 더 풍부한 커스터마이징이 가능한 NeoVim을 압도적으로 지지한다. 이에 따라 NeoVim을 이용하는 것으로 설정을 작성하도록 수정했다. 그렇다고 vim에서 작성한 것과 다를 것이 없으므로 크게 걱정할 필요는 없다.
플러그인 적용이 vim과 동일하므로 굉장히 편리하다.
이전 항목에서 brew를 이용하여 NeoVim을 설치했다는 것을 전제하에 진행하므로, NeoVim을 설치하지 않았다면 이전 항목을 참고하여 NeoVim을 설치하고 오자.

1) 설정 파일 생성

vim과 달리 NeoVim~/.vimrc를 이용하지 않고, ~/.config/nvim/init.vim을 설정 파일로 이용한다. 따라서 설정 파일의 경로를 생성해두어야 init.vim을 작성할 때 파일을 쓸 수 없다는 오류를 피할 수 있다. 아래 명령어로 경로와 파일을 미리 만들어두자. (두 번째 명령어를 실행 후, :w 입력하고 enter를 누르면 파일을 생성하고 에디팅 화면에서 나올 수 있다.)
mkdir -p ~/.config/nvim vim ~/.config/nvim/init.vim

2) vim-plug 설치

vimrc 파일을 열어 작성하기 전에 vim에서 플러그인을 편리하게 사용할 수 있도록 해주는 vim-plug를 설치하자. 이는 위에서 미리 설치해둔 iTerm2에서 아래 명령어를 통해 설치한다.
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

3) init.vim 작성

init.vim이라는 파일은 ./config/nvim 경로 하위에 존재하고 있다. 아래 명령어를 통해 설정 파일을 열 수 있다.
vim ~/.config/nvim/init.vim
현재 이용 중인 전체 init.vim 코드는 아래 링크에서 확인할 수 있는데, 링크의 내용을 init.vim 파일에 붙여 넣으면 된다. 그리고 필요에 따라 설정 파일을 따로 수정해주면 되는데, 예를 들어 go관련 설정들은 작성하지 않아도 무방하며, 이너서클 돌파에 따라 vim-42header는 빠졌으므로 추가 작성이 필요하다. 잘 모르겠다면 일단 붙여넣고, 없앨 부분과 추가할 부분을 동료와 논의해보자.
어느 설정이 필요하고 불필요한지는 아래 설명되는 내용들을 읽어보면서 확인해볼 수 있으므로 일단 NeoVim 부분의 설정 부분을 살펴보는 것을 권장한다.
또한 당연히 설정에 필요한 것들을 완전히 진행한 것이 아니므로 단순히 설정 값을 붙여넣었다고 해서 끝이 아니다. 따라서 오류가 발생하는 것이 당연하며 하나 하나 해결해볼 것이다.

4) colorscheme 적용

vimNeoVim기본 설정 테마는 꽤나 보잘 것 없다. 따라서 init.vim 내용을 보면 colorscheme을 적용해둔 것을 볼 수 있는데, 내 경우에는 dracula로 설정한 것을 볼 수 있다.
colorscheme은 직접 파일로 적용하는 것도 가능하지만, 내 경우에는 init.vim의 Plug 'dracula/vim'이라는 구문을 보면 알 수 있듯이, colorscheme플러그인으로 두어 자동으로 설정하도록 만들어두었다. 만일 이러한 설정이 싫다면 직접 로컬에서 파일을 위치시키는 작업을 해야한다. 방법은 아래와 같다.
iTerm2를 열고 아래 명령어를 순서대로 입력하면, 바탕화면에 colorscheme을 적용할 수 있는 파일들이 다운로드 되어 있을 것이다. 다운로드된 디렉토리를 열고 colors 안으로 들어가보면 여러 파일들이 있는 것을 볼 수 있다.
다운로드된 seoul256과 같은 colorscheme 파일은 ~/.vim/colors 경로에 있어야 정상적으로 테마가 적용된다. 따라서 아래 명령어를 이용하여 원하는 파일을 ~/.vim/colors 디렉토리에 위치시키면 된다.
cd ~/.vim mkdir colors cp ~/Desktop/awesome-vim-colorschemes/colors/seoul256 ./colors
colorscheme 적용 시 주의할 점은 init.vim 상에서 if를 이용한 termguicolors 검사 구문 이후에 colorscheme 구문을 이용해야 한다는 것이다.

5) 플러그인 설치 및 적용

위에서 설치했던 vim-plug를 이용하여 vim에서의 편리한 플러그인들을 이용해볼 것이다. 플러그인을 설치하는 방법은 여럿 있지만, vim-plug를 이용하는 경우에는 init.vim"Plugins라는 주석이 달린 부분처럼 단순히 플러그인 명시만 하면 거의 설치된 것과 다름 없다.
만일 초기에 제시된 init.vim 파일을 따로 수정하지 않았다면 init.vim 파일을 열고 \i를 치기만 하면, 플러그인이 자동으로 설치된다.
그렇지 않고 Mapping 정보를 수정했다든가 혹은 vimrc를 열고 \i를 입력했는데 플러그인 설치가 잘 되지 않는다면, init.vim 파일을 열고 Normal Mode에서 :so % 입력 후에 :PlugInstall까지 입력해주면 자동으로 플러그인 설치가 완료된다.
Normal Mode에서 :so %는 현재 vim 혹은 NeoVim을 설정 파일 값대로 적용하는 새로 고침과 비슷한 역할을 한다.
위에서 제시한 init.vim플러그인들은 아래와 같다. 특히 coc.nvim의 경우 node.js가 설치되어 있지 않으면 에러가 발생하니, 4번 플러그인의 설정 방법 부분을 잘 살펴보도록 하자.

1. dracula/vim

vim 혹은 NeoVim의 컬러 테마를 설정할 수 있는 플러그인

2. rainbow_parentheses.vim

코드 작성 시, 다중 괄호에 대한 색상 적용 플러그인

3. nerdtree

vim에서 파일 탐색이 가능하도록 탐색기 기능 제공 플러그인

4. coc.nvim

코드를 자동으로 완성을 해주는 플러그인
coc.nvim 설정 방법

5. vim-diminactive

vim을 분할 화면으로 이용할 때 사용하고 있지 않은 화면에 대해 가시성을 부여하는 플러그인

6. vim-gitgutter

.git이 존재하는 디렉토리의 변경 사항에 대한 가시성을 부여하는 플러그인

7. tagbar

현재 작업 중인 스크립트의 구조를 파악하여 정보를 제공하는 플러그인

8. vim-devicons

nerdtree를 이용하여 파일 탐색기를 열었을 때, 아이콘을 같이 표기해주는 플러그인
정상적인 설치를 했음에도 아이콘이 깨지는 경우

9. vim-airline

vim 이용 시에 상태바 및 버퍼를 같이 표기해주는 플러그인

10. vim-airline-themes

vim-airline의 다양한 Theme을 적용할 수 있게 해주는 플러그인

11 . vim-visual-multi

vim 상에서 멀티 커서를 이용할 수 있게 해주는 플러그인

12. vim-tmux-navigator

tmuxPanevim의 분할 화면간의 자유로운 전환을 동일한 키로 이용할 수 있게 해주는 플러그인
tmux 이용 방법은 아래와 같다. tmux를 이용하지 않을 것이라면, 13번과 14번의 플러그인은 별도로 설치하지 않아도 된다.

13. vim-tmux-focus_events

tmuxvimFocusGainedFocusLost에 대한 통합을 지원하는 플러그인

14. vimspector

특정 언어에 따라 디버깅을 가능하게 해주는 플러그인

15. markdown-preview.nvim

md 파일의 미리보기를 만들어주는 플러그인

5) Mapping

Mapping에 대하여 inoremapInsert Mode의  No-Recursion Mapping, nnoremapNormal ModeNo-Recursion Mapping, imapInsert ModeRecursion이 허용되는 Mapping이다. 예를 들어 inoremap jj <esc>의 경우, Insert Mode에서 jj를 입력하면 <esc>가 눌리는 것과 같다. 따라서 Normal Mode가 된다. 아래와 같은 응용이 가능하다. vim-42header를 설치를 하고 나서 :Stdheader를 입력하면 헤더 추가가 되고 :RainbowParentheses를 입력하면 괄호에 대해서 색상이 적용되는데, 매 번 입력하기엔 타이핑이 너무 길기 때문에 Normal Mode에서의 Mapping을 적용하면 편하게 쉬운 단축키로 이용할 수 있다.
위 링크에서 최하단에 Mapping에 대한 정보가 있습니다. 그리고 vimspector 이용법은 별도의 링크에서 다룰 예정입니다.

5. zsh 환경 설정

설치해야 할 것들 중 oh-my-zsh를 설치하면서, zsh의 부족한 기능들을 꽤나 보완하게 되었다. 그럼에도 여전히 oh-my-zsh의 테마는 보잘 것 없으며, 꽤나 불편한 점 역시 존재한다. 아래에서 이들을 하나 하나 해결해볼 것이다.

1) zshrc 작성

zshrc라는 파일은 홈 디렉토리에 존재하고 숨김 파일이다. 따라서 아래 명령어를 통해 zshrc를 열 수 있다. zshrc 파일은 zsh를 열었을 때 자동으로 불러오는 파일이며, 다양한 설정 값들이 기재된 파일이다.
vim ~/.zshrc
현재 이용 중인 전체 zshrc 코드는 아래 링크에서 확인할 수 있으므로, 링크의 내용을 zshrc 파일에 붙여 넣으면 된다. 다만 이중에서 필요 없는 부분은 빼도 되는데, 주석을 잘 확인하여 자신에게 정말 필요 없는 것이 맞는지 확인 후 빼도록 하자. 빼도 되는지 안 되는지 잘 모르겠다면, 아래 기재된 설명들을 보고 판단하면 된다.

2) 경로 수정

위에 제시된 zshrc 코드는 경로에 대한 내용들이 꽤나 많이 적혀 있다. 기재된 경로는 사용자 이름을 기반으로 작성했기 때문에, 자신의 이름으로 적절히 수정하면 된다. 위 파일에서 사용자 이름은 jseo로 되어 있으므로, jseo를 검색해서 나온 것들을 자신의 이름으로 바꿔주자.

3) Preset 설정

보잘 것 없는 iTerm2zsh 설정을 바꿔보자. iTerm2에서 cmd + ,를 누르면 설정 화면이 등장한다. 설정 화면의 Profiles를 들어가면 Terminal 전반적인 것들을 수정할 수 있는데, 우선 Text 탭에서 Font부터 바꿔볼 것이다.
아래 링크에서 Nerd + Powerline이 적용되는 Meslo 서체를 다운로드 받은 뒤, 실행하면 시스템 상에 서체를 설치할 수 있다. 위 설정 창의 Font에서 Meslo를 검색하면, 설치한 서체를 적용할 수 있다.
색상을 설정할 때는 직접 설정 값을 바꿔줄 수도 있지만, 꽤나 복잡하다. 따라서 iTerm2는 기존에 만들어둔 설정을 이용할 수 있도록 되어있는데, 이 때 아래 그림처럼 Colors 탭의 Color Presets...를 클릭하여 Import...를 누르면 바탕화면의 색상 설정 파일을 선택하여 불러올 수 있다.
내 경우에는 Dracula 테마를 이용하고 있으므로 아래 링크에서 제시된 Install using Git 항목으로 테마 파일을 다운로드 받으면 된다. 그리고 위에서 나타난 것처럼 해당 파일을 Import...하도록 만들어 이용하면 되겠다.
만일 Dracula 외에 다양한 테마 파일을 살펴보고 이를 적용하고 싶다면, 아래 명령어를 통해 많은 테마 파일을 다운로드 받을 수 있다. 원하는 테마를 골랐다면, 동일한 방법으로 적용할 수 있다.

4) Syntax Highlighting 및 Prompt 설정

iTerm2에서 아래 명령어들을 입력하여 zsh-syntax-highlighting~/Library 경로에 설치한다. 그리고 zshrczsh-syntax-highlighting의 경로에서 jseo라는 이름 대신 자신의 이름으로 잘 교체해뒀다면, 더 이상의 zsh-syntax-highlighting 에러는 찾을 수 없다.

5) Alias 설정

iTerm2에서 명령어를 이용할 때, 긴 명령어를 반복해서 입력할 때가 많을 것이다. 그런 명령어들을 alias하면 짧은 명령어로 대치하여 이용할 수 있다. 이 기능은 zshrc를 수정하여 이용할 수 있다. 위에서 제시되었던 zshrc 파일의 대부분이 alias로 되어 있는데, 자신에게 필요한 alias들을 찾아서 이용할 수 있도록 하자.

6) tmux 설정

위에서부터 꾸준히 tmux의 필요성을 제시했는데, 이는 터미널 상에서의 작업을 진행할 때 세션 단위로 진행할 수 있도록 해주기 때문이다. 즉, 예기치 못하게 터미널 프로그램이 종료되더라도 컴퓨터를 종료하지 않는 이상 세션은 여전히 유지되고 있기 때문에 다시 복구하는 것이 가능하다.
또한 터미널의 분할로 진행하던 작업들을 하나의 세션 단위로 진행하도록 만들고, 세션 상에서의 창들을 관리할 수 있기 때문에 단순히 터미널 상에서의 새로운 터미널 탭을 이용하는 것과는 사뭇 다르게 편리한 기능을 제공한다.
이에 대한 설정은 아래 글에서 확인하여 진행하도록 하자.
NeoVim에서의 플러그인들도 살펴보면 tmux와 관련된 것들이 꽤 있는데, tmux를 이용할 것이라면 매뉴얼을 꼭 한 번씩 살펴보자.

6. Reference