```
[!NOTE] Winddows와 Macos
macos를 기준으로 설명하고 있으나, 거의 대부분 macos의 `Cmd`키를 `Ctrl`키로
변경하면 windows에서도 그대로 사용할 수 있음
```
# VSCode 단축키
- `Cmd + p` : 파일 오픈을 위한 palette
- `Cmd + shift + p` : 명령어 실행을 위한 palette. `Cmd + p` 한 다음 '>'를 입력해도 됨
- `Cmd + shift + o` : 현재파일에서 심볼 찾기 (field, method, function 등). `Cmd + p`한 다음 '@'를 입력해도 됨
- `Cmd + Opt + <좌우 화살표>` : 열려있는 편집기 전환
- `Cmd + shift + e` : 편집기와 탐색기를 전환 함. (탐색기에서 vim 커서 이동 키도 동작한다는 것이 핵심)
- `Cmd + Opt + <상하 화살표>` : 열모드로 블럭 지정. (VIM단축키와 조합하면 최상임. 이건 글로 설명이 안됨)
---
```
[!NOTE] VSCode용 Vim 확장
- 여기서는 vscodevim 에서 제작한 Vim 확장을 설치하여 사용한다.
Vim 단축키는 다를 바 없다.
- `esc`키를 눌러 Normal모드 진입시 '한글' 입력상태인 경우 많이 불편하다.
'한영'을 자동으로 변환해주는 여러 방법들을 써봤지만, 몇 일 지나면 풀려서
잘 동작 안한다. 그냥 Normal 모드 진입시 '한영'변환을 신경써서 잘 해주자.
(시간낭비하지 마세요)
- macos의 경우 `Cmd`키와 `Caps`키를 바꾸자.
- Windows의 경우 `Ctrl`키와 `Caps`키를 바꾸자. (써보면안다. 얼마나 편한지)
```
```
[!warning]
- 표기된 모든 단축키는 `대소문자`를 구분합니다. (shift 입력하기 귀찮아서임)
- `잘라내기`라고 표기한 것은 `붙여넣기`가 가능하다는 뜻입니다.
- VIM 모드 전환은 직접 해봐야 안다.
```
# Vim 단축키
## 커서 이동
### 기본
- `h`, `j`, `k`, `l`: 좌,하,상,우
- `gg`: 맨 위로 커서 이동
- `G`: 맨 아래로 커서 이동
### 단어 단위로 이동
- `w`: 단어의 시작 위치로(정방향)
- `e`: 단어의 마지막 위치로(정방향)
- b: 단어의 시작 위치로 (역방향)
### 한 문장 내에서의 이동
- `0`(숫자): 라인 맨 앞으로 커서 이동
- `^`: 문장 맨 앞으로 커서 이동
- `$`: 문장 맨 뒤로 커서 이동
### 스크롤
- `ctrl + f`: 다음 페이지의 첫 줄로 커서 이동
- `ctrl + b`: 다음 페이지의 마지막 줄로 커서 이동
### 원하는 줄 번호로 한 번에 이동
- `:num`: 줄 번호 활성화
- `:` 를 누른 후 원하는 줄 번호 입력
### '{ }'을 기준으로 이동
- `%`: '{ }'나 '( )'에서 괄호의 짝으로 커서 이동
---
## 편집
### 삽입 (Insert 모드로 전환)
- `i`: 현 커서 앞에 Insert 모드
- `I`: 현 커서 줄 맨 앞 Insert 모드
- `a`: 현 커서 뒤 Insert 모드
- `A`: 현 커서 줄 맨 뒤 Insert 모드
- `O`: 현 커서 줄 바로 윗줄 Insert 모드
- `o`: 현 커서 줄 바로 아랫줄 Insert 모드
```
[!help] VIM에서 모드전환
"Insert 모드"로 전환을 해야 텍스트 입력이 가능해지며, `esc`키를 누르면 다시 커서의 모양이
'사각형'(설정에 따라 '밑줄'일수도 있음)으로 바뀐다. 이를 "Normal 모드"라고 한다.
`:`(콜론) 입력하면 화면 하단에 특정 명령어를 입력할 수 있는 상태가 되는데
이를 "Command 모드"라고 한다. command 모드에서 검색기능을 수행할 수 있다.
"Visual 모드"도 있다.
```
### 삭제/잘라내기 및 수정
- `dd`: 현 커서 줄 잘라내기
- `dw`: 현 커서 위치부터 단어의 마지막까지 잘라내기
- `숫자 + dd`: 커서가 위치한 줄부터 숫자에 해당하는 수만큼의 줄 잘라내기
- `shift + d`: 현재 커서의 위치부터 줄의 끝까지 잘라내기
- `x`: 커서가 위치한 문자 잘라내기
- `s`: 커서가 위치한 문자 잘라내고 Insert 모드
- `cc`: 커서가 위치한 줄 전체 잘라내고 Insert 모드
- `cw`: 커서가 위치한 곳부터 단어의 마지막까지 잘라내고 Insert 모드
- `C`: 현재 커서의 위치부터 줄의 끝까지 잘라내고 Insert 모드
- `r + 변경할 문자`: 커서가 위치한 문자 하나 수정
### 복사/붙여넣기
- `y`: 현 커서 하나만 복사
- `yy`: 현 커서 줄 복사
- `yw`: 현 커서부터 단어가 끝나는 위치까지 복사하기
- `p`: 붙여넣기(정방향)
- `y` 한 것을 현 커서 바로 다음 위치에 붙여넣기
- `yy` 한 것을 현 커서 줄 바로 아랫줄에 붙여넣기
- `P`: 붙여넣기 (역방향, `p`하고 반대다)
## 선택
### 한 줄 선택
- `V`: 라인 단위로 블럭지정이 가능하다.
### 여러 줄 선택
- `esc` 를 눌러 normal 모드로 전환
- v : 커서단위로 블록 선택됨
- `V` 라인 단위로 블록 선택됨
### 멀티 포커스
- `ctrl + v`: 사각형의 블럭지정이 가능
### 검색
- `/` + '찾을 단어' + `Enter`: 로 찾은 후
- n : 다음 찾기 (정방향)
- N : 이전 찾기 (역방향)
---
## 기타
### 줄 합치기 : `J`
### 되돌리기 : `U`
### 취소한 것 다시 되돌리기 : `ctrl + r`
### 대소문자 전환 : `~`
### 들여/내어 쓰기 : `>>`, `<<`
### 창 분할과 이동
- `:vs` : 세로로 창 분할 (horizontal)
- `:sp` : 가로로 창 분할(vertical)
- `:new`: 가로로 창 분할하고 새파일 생성 (vertical)
- `ctrl+ww`: 분할 창 이동동
- `:tabnew`: 새로운 탭 생성
- `gt` 또는 `gT`: 탭 이동
### 문자열 치환
- `:%s/korea/fighting`: 'korea'를 'fighting'으로 변경한다
---
## 서버에서
### 쉘 나갔다 들어오기
- `:sh` : 쉘로 나가기
- (쉘에서) `ctrl + d`
### VIM 에서 명령어만 실행하기
- `:!`
- `:r !` : '!' 뒤에 수행한 명령어 결과를 에디터에 바로 불러온다
### 파일 열기
- `:e `
- `:Explore`를 입력하면 폴더목록을 이동하며 찾을 수 있다.
---
# 개발자는 어떤 키보드를 사야할까
- 펑션키가 존재하는 미니배열 키보드(숫자 키패드 없고 화살표키가 딱 붙어있는 형태)
- 펑션키가 없는 미니배열 키보드는 `esc`키하고 `~` 가 동일 키에 배치되어있어 불편하다
- 마크다운 문서를 작성하는 경우가 점차 많아지다 보니 불편함을 느꼈습니다.
- 그동안 저는 펑션키가 없는 미니배열만을 고집했었습니다.
- 숫자 키패드는 반드시 없어야 한다.
- 인터넷에서 소스 카피할 때 마우스를 안 쓸 순 없다.
- 개발자에게 숫자입력이 주 업무일리 만무하다. 필요하다면 별도 키패드 구매 추천
- 정말 필요하다면 마우스를 왼쪽에 두고 사용하자(왼손잡이 부러움)
- 화살표키가 메인 키배열 우측에 빠져있는 형태는 정말 정말 고민한번 더 해보자
- 써보면 안다. 그 미묘한 불편함을
- 내추럴 키보드를 고려 중이라면 가운데가 분할 되어있으므로 `b`키가 좌우 둘다 존재하면 좋다. (한글 사용 개발자에게는 필수)
- 가장 마지막으로 키감을 고려하자.
- 오래 쓰다보면 키감에 불편함이 없어지는 경우가 경험상 대부분이다.
- 두어 달 써보고 영 아니다 싶으면 쓰던거 남 주고 새거 사야한다. 없애지 않으면 다시 돌아온다
- 실제 물리적 코딩량은 생각보다 많지 않다. 몇 천 라인을 코딩하고 있는 자신을 발견했다면 키보드를 바꿀 것이 아니라 생각을 바꿔야한다.
- 기계식이나 무접점 키보드를 사용하는 이유는 손톱 때문이다.
댓글
댓글 쓰기