마우스 사용을 최소화하고 키보드만으로 macOS, IDE, 브라우저, 터미널 작업 흐름을 빠르게 만드는 방법을 정리한다.
URL: https://medium.com/@true.neu/keyboard-driven-productivity-in-macos-def201b6c8fa
읽는 시간 8분
2018년 10월 28일
--
엔터를 누르거나 클릭하면 이미지를 원본 크기로 볼 수 있습니다
Kinesis Advantage2 키보드, https://www.kinesis-ergo.com/shop/advantage2/ . 모든 권리는 Kinesis에 있으며, 상표 등등도 그들의 것입니다. 꽤 멋져 보이긴 하는데 ⇧⌥⌘ 단축키의 인체공학적 측면에는 좀 의문이 있습니다.
그럼 안녕하세요, 동료 개발자 여러분.
혹은 데브옵스, 혹은 시스템 관리자여도 상관없습니다.
하루 종일 포인팅 장치(마우스/트랙패드)에 손을 뻗느라 얼마나 많은 시간과 노력을 낭비하는지 생각해 본 적 있나요?
하나 과감한 가정을 해봅시다. 여러분이 하루에 100번 애플리케이션 포커스를 바꾼다고 해볼게요. 터미널 에뮬레이터에서 IDE로, 메신저로, 브라우저로, 다시 터미널 에뮬레이터로… 이런 사이클을 25번. 그리고 ⌘⇥를 쓰지 않는다고 가정하면, 매번 다음을 해야 합니다:
각 행동이 대략 0.5초씩 걸린다고 하면 총 2.5초입니다. 여기에 100을 곱하면 포커스 변경에만 4분 조금 넘게 쓰게 됩니다. “8시간짜리 근무 시간에 비하면 별거 아니잖아”라고 말할 수도 있겠죠. 그런데 여기에 브라우저에서 활성 탭 바꾸려고 마우스에 손을 뻗는 것, 메뉴 항목 클릭하는 것, 애플리케이션 실행하는 것, 브라우저 검색창에 포커스 주는 것, 터미널 에뮬레이터에서 텍스트 복사하는 것까지 전부 더해보세요. 아마 결과가 썩 마음에 들진 않을 겁니다.
그럼 이걸 어떻게 고칠 수 있을까요?
제가 개인적으로 쓰는 소프트웨어(즉 macOS, Jetbrains IDE, iTerm, Google Chrome)에 대해 이야기하겠지만, 취향이 다르더라도 유용한 부분이 많을 겁니다. 예를 들어,
이건 논쟁할 것도, 장단점을 따질 것도 없습니다. 터치 타이핑을 못 하고 독수리 타법을 쓰거나, 혹은 각 키 위치를 외워서 손이 피아니스트처럼 움직인다 해도, 여러분은 느리거나 오타를 많이 내거나(대부분은 둘 다)일 가능성이 큽니다. 물론 예외는 있지만, 일반적으로는 가능한 한 빨리 터치 타이핑을 배우는 게 좋습니다.
조금 감을 잡기 위해 수치를 보자면, 저 같은 평범한 터치 타이퍼는 40–60 wpm(분당 단어 수) 정도를 칩니다. 평균적인 독수리 타법 사용자는 27–37 wpm 정도라고 합니다(https://blog.typing.com/hunt-and-peck/). 물론 이게 오늘보다 코드 생산량이 두 배가 된다는 의미는 아닙니다. 하지만 Slack에서 동료에게 답장하는 데 드는 시간은 반으로 줄겠죠. 하루에 200단어(이 문단의 두 배 조금 넘는 분량) 정도를 타이핑한다면, 함수 이름 짓는 데 쓸 수 있는 시간이 2.5분 더 생깁니다.
지금 쓰는 키보드 레이아웃이 여러분이 하는 일에 최적인지 생각해 보세요. 아마 표준 QWERTY를 쓰고 있을 겁니다. 저는 손가락이 홈 로우에서 멀리 이동하는 걸 싫어하고, 괄호/대괄호 같은 문자를 자주 쓰는데 이들은 보통 Shift+숫자를 눌러야 하죠. 그래서 Programmer Dvorak 레이아웃(https://www.kaufmann.no/roland/dvorak/)을 선택했습니다. 여러분은 일반 Dvorak이나 Colemak이 더 끌릴 수도 있습니다.
표준이 아닌 키보드 레이아웃을 선택하면 단점도 있습니다.
이 부분을 커스터마이즈하는 데 어떤 소프트웨어를 쓸 수 있을까요? 재배포 가능한 자신만의 키보드 레이아웃을 만들고 싶다면 Ukelele(https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ukelele)이 있습니다. Karabiner-Elements(https://pqrs.org/osx/karabiner/)도 큰 도움이 되며, 뒤에서 다시 언급하겠습니다.
제가 좋아하는 저수준 수정이 몇 가지 더 있습니다. 흔한 UNIX 계열 단축키인 ^w, ^a, ^e는 macOS에서 기본으로 동작합니다. 하지만 ⌥ 계열은 그렇지 않죠. 저는 macOS의 Option 레이어를 별로 좋아하지 않습니다. ‘기호들’이 나오는데, 제가 이직하는 빈도보다 덜 쓰는 기호들이거든요. 다행히도 예를 들어 ⌥D를 시스템 전역에서 단어 단위 앞으로 삭제(forward delete a word)로 리매핑할 수 있습니다. 이런 수정 목록은 https://github.com/ttscoff/KeyBindings 에 아주 많이 정리돼 있습니다.
또 하나는 Nikita Prokopov의 글(http://tonsky.me/blog/cursor-keys/)에서 영감을 받았습니다. 핵심 아이디어는 Caps Lock 키를 fn으로 리매핑하고, fn+JKLI를 방향키로 매핑하는 겁니다. 그러면 방향키로 이동할 때도 손을 홈 로우에서 전혀 떼지 않아도 됩니다. 저는 여기서 더 나아가 fn+SDFE를 ^a/PgDown/^e/PgUp로도 매핑했습니다.
macOS 기본 동작(일명 Character Picker)처럼 ‘a’, ‘o’, ‘e’, ‘c’ 같은 글자 키를 길게 눌러 악센트 문자를 입력하나요? 아니죠? 저도 그렇습니다. 이 기능을 꺼봅시다. 그렇지 않으면 커밋 메시지로 ‘aaaaaaaaaaaaaaaaaaaa’를 키 한 번 길게 눌러서 입력할 수가 없거든요. 이 링크를 참고하세요: http://m10lmac.blogspot.com/2011/07/os-x-107-lion-getting-rid-of-character.html
그리고 마지막이지만 중요한 것: Karabiner-Elements의 표준 수정 중 하나로 Caps Lock을 “하이퍼 모디파이어”(⇧⌥⌘^)로 매핑하는 것입니다. 이 조합은 일반적으로 어떤 애플리케이션에서도 거의 쓰이지 않습니다. Caps Lock은 이미 방향키 모드에 써버렸기 때문에, 저는 오른쪽 ⌥에 이 하이퍼 모디파이어를 매핑합니다.
자주 쓰는 애플리케이션에서 가장 유용한 단축키를 찾아보고, 적극적으로 활용해야 합니다. 어떤 일을 하는 방법이 두 가지가 있는데 하나는 마우스, 다른 하나는 키보드라면, 항상 키보드를 선택하세요. 한 가지 방법만 있다면, 시간을 조금 들여서 “올바른” 방법을 찾으세요. 마우스 없이요. 못 알아챘을까 봐 말하는 겁니다.
메뉴 바나 Dock에 포커스 주기 같은 시스템 전역 단축키도 잊지 마세요. Adium 같은 멀티 윈도우 앱에서 의외로 유용한 단축키로 “다음 윈도우로 포커스 이동” 같은 것도 있습니다.
Spotlight는 다들 쓰고 있겠죠. 컴퓨터에서 무언가를 찾거나 실행하는 좋은 방법입니다. 하지만 저는 Spotlight를 Alfred로 완전히 대체했습니다. 제가 언급하는 다른 소프트웨어들과 달리 Alfred는 유료지만, 특히 멋진 기능이 있습니다: Workflows. 관점만 다를 뿐 사실상 Automator입니다. 트리거를 설정하고 그 뒤에 여러 액션을 연결하는데, Alfred의 옴니바 입력값을 활용할 수도 있습니다. 제가 가장 많이 쓰는 Workflow는 아주 단순합니다. ⇧⌥^⌘+글자에서 트리거되고 특정 앱을 실행합니다. ‘a’는 iTerm, ‘d’는 Chrome, ‘g’는 IDEA… 이런 식입니다. 이렇게 하면 앱 간 포커스 전환이 엄청 빨라집니다(기억나죠? 저는 ⇧⌥^⌘를 오른쪽 ⌥로 매핑했으니까요).
Alfred에는 이 주제와 직접 관련은 적지만 기능이 정말 많습니다. 그래도 제가 제일 좋아하는 기능 하나는 언급하겠습니다: Clipboard History. ⌥⌘V를 누르면 최근 클립보드에 있었던 것들의 목록이 옴니바와 함께 뜹니다. 탭 여러 개 사이에서 값 5–6개를 복사/붙여넣기 해야 할 때, 탭 전환을 수없이 하는 대신 한 번에 묶어서 처리할 수 있어서 시간을 크게 아낍니다.
강력한 텍스트 에디터나 IDE를 쓴다면, 가능한 거의 모든 액션에 단축키를 지정할 수 있을 겁니다. 예를 들어 IntelliJ IDEA 단축키 “사용법”만 다루는 1시간짜리 영상도 있습니다: https://www.youtube.com/watch?v=eq3KiAH4IBI
할 말은 많지 않습니다. 가능할 때마다 단축키를 쓰도록 스스로를 강제해서, 그게 제2의 천성이 될 때까지 반복하면 됩니다. 참고가 된다면 IDEA에서 제가 좋아하는 것들을 적어둘게요: 선택 영역 확장/축소, 최근 파일, 최근 프로젝트, Git/VCS 명령, 내비게이션 바로 이동, Project 툴 윈도우 포커스, VCS 툴 윈도우, 파라미터 정보, 정의로 이동, 사용처 보기, 파일/심볼 검색, 경로에서 찾기, 경로에서 바꾸기, 그리고 당연히 액션 찾기(Find action).
Google Chrome을 쓴다면 Vimium이라는 훌륭한 확장 프로그램이 있습니다(https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en). 브라우저에서 거의 모든 동작을 키보드로 제어할 수 있게 해줍니다. 페이지 열기/스크롤, 링크 따라가기, 페이지형 뷰에서 다음/이전 버튼을 단축키로 누르기 등등요. Firefox나 Safari용도 있긴 하지만 그렇게 강력하진 않습니다. 하지만 Chrome을 도저히 못 쓰겠다면 대안을 확인해볼 가치는 있습니다(https://github.com/philc/vimium/wiki/Alternative-Vimium-for-Other-Browser).
터미널 에뮬레이터에서 입력줄을 이동할 때, 커서를 두세 글자 이상 옮겨야 한다면 방향키나 ^f/^b는 쓰지 마세요. ⌥f/⌥b를 섞어서 단어 경계 단위로 이동하세요. 전반적으로 텍스트 이동/편집에 관한 전형적인 UNIX 단축키를 익혀두면 손해 볼 일이 없습니다.
터미널 에뮬레이터 창에서 무언가를 복사해야 할 때도 종종 있죠. iTerm에는 좋은 기능이 몇 가지 있습니다. 첫째, 선택 영역의 경계를 왼쪽/오른쪽으로 이동하는 단축키를 정의할 수 있습니다. 둘째, 이른바 Shell Integration을 켤 수 있는데, iTerm이 입력과 출력을 제어한다는 사실을 로컬 셸이 ‘알게’ 만들어서 조금 더 똑똑해집니다.
첫 번째 기능은 터미널 출력에서 임의의 텍스트 조각을 선택해 복사할 때 이런 패턴을 가능하게 합니다: ⌘f(찾기) + 복사하고 싶은 조각의 시작 부분 + (제 경우) ⌥⇧→ (사실, 앞에서 말한 설정을 모두 고려하면 ⇪⌥⇧l) + ⌘c.
두 번째 기능은 이전 명령의 출력 전체, 또는 지금 입력 중인 현재 명령 자체를 단축키 한 번으로 복사할 수 있게 해줍니다.
또한 iTerm을 쓰면서 tmux 통합을 켜지 않았다면, 제발 제발 제발 지금 당장 켜세요. 어떤 이유로 시도했다가 마음에 안 들었다면, 괜찮습니다. 충분히 그럴 수 있죠. 다만 개인적으로는 screen이나 tmux 밖에서는 아무 의미도 없는 별도의 단축키 세트를 쓸 이유를 전혀 모르겠을 뿐입니다. 하지만 그건 제 생각이고요. 어떤 사람들은 아직도 vim을 좋아하잖아요. 이유는 모르지만.
새롭고 낯선 걸 배우는 데는 시간이 듭니다. 하지만 오래됐고 느리지만 익숙한 방식으로 다시 돌아가지 않도록 스스로를 잘 관리한다면, 곧 새롭고 빠른 습관이 제2의 천성이 될 겁니다. 저는 이제 거의 홈 로우에서 손을 떼지 않는데, 그 느낌이 정말 좋습니다. 쓸데없는 근육 활동에 시간을 쓰지 않습니다(유용한 근육 활동은 탁구와 베이스 기타로 충분합니다, 감사합니다). 그리고 그냥… 멋져 보입니다. 진짜로요. 손을 거의 안 움직이는데도 모든 게 잘 돌아가는 느낌입니다.
이 글은 마우스를 단 한 번도 만지지 않고 작성했습니다(물론 Medium의 몇몇 디자인 결정은 벌을 줘야겠지만요. 아니 진짜, 좌우에 이렇게 공간이 넓게 남는데 이미지 넣기 버튼이나 헤더 만들기 버튼은 왜 없죠?..)
가끔 ‘RSI 전단계’라고 부를 만한 증상(손목 뻐근함, 약한 통증 등)을 느끼곤 합니다. 그래서… 키보드를 두 개 이상 쓰는 경우, Karabiner-Elements는 기본적으로 한 키보드에서 누른 modifier를 다른 모든 키보드에도 미러링합니다. 즉, 두 키보드를 동시에 아주 자연스럽게 사용할 수 있습니다. 거의 분리형 키보드처럼요. 제가 바로 그렇게 씁니다. 왼손은 노트북 키보드로 입력하고, 오른손은 일반 Apple Wired 키보드를 씁니다. 이렇게 하면 손목을 부자연스럽게 꺾지 않아도 양팔을 곧게 유지할 수 있습니다.
네, 이게 전부입니다. 홈 로우에서 만나요!