생산성 향상을 위해서 어떤 툴을 사용하던 단축키를 잘 활용하는 편이었다. 코드 에디터에서 역시 생산성 향상을 위해 마우스를 사용하지 않기 위해 미뤄왔던 Vim 공부를 해보려고 한다. 추후 NeoVim 세팅도 올려보려고 한다.
Vim을 공부하려면 터미널에서 “vimtutor”를 입력하면 한국어로 번역되어있는 학습 문서가 나온다. 거기서 명령어를 따라가면서 순차적으로 연습할 수 있게 잘 만들어놨다.
명령을 반복하고 싶을 때 [횟수] [명령] [대상] 혹은 [명령] [횟수] [대상]이 가능하다.
-
터미널에 첫 진입 시 기본 모드다. 영문 입력 상태여야 명령어가 동작한다.
i
: 커서 앞에 추가한다.a
: 커서 뒤에 추가한다. (a
가 유용할 때는e
로 단어의 끝을 순회할 때 특정 단어의 뒤에 내용을 붙여야 할 때a
를 누르면 현재 커서위치의 다음부터 insert가 되기 때문에 편하다.)o
: 커서 아래에 한 줄을 추가하고 insert모드로 실행. (위에 만들 때는O
)x
: 현재 커서 위치 대상만 삭제
-
이동
h
: 왼쪽j
: 아래k
: 위l
: 오른쪽$
: 커서가 위치한 줄의 가장 마지막으로 이동
-
복사 및 붙여넣기
v(visual mode)
에서 커서를 움직여서 하이라이트 후y
로 복사 가능.yy
: 현재 줄 복사y$
: 커서 위치부터 줄 끝까지 복사y^
: 커서 위치부터 줄 시작까지 복사yw
: 한 단어 복사 (y명령어도 숫자와 섞어쓸 수 있다)p
: 하이라이트 한 내용 복사 시에는 커서에 붙여넣기 / 줄 복사 시 복사한 내용을 커서 아래 줄에 붙여넣기P
: 줄 복사 시 복사한 내용을 커서 위 줄에 붙여넣기
-
변경 내용을 무시하고 나갈 때는
ESC
>:q!
>Enter
-
저장하고 나갈 때는
ECS
>:wq
>Enter
-
삭제 명령은
d
로 시작한다. -
dw
: 다음 단어 전까지 공백포함하여 삭제d2w
: 다음 두 단어를 지운다.de
: 다음 단어 전까지 공백제외하고 삭제d$
: 현재 위치부터 행의 끝까지 다 지운다.dd
: 줄 전체를 지운다.2dd
: 2줄을 지운다.
-
건너뛰기
w
: 다음 단어로 건너뛴다.e
: 현재 단어의 가장 뒤로 이동한다.l0
: 문장의 가장 앞으로 이동한다.
-
되돌리기
u
: 1번 돌린다.U
: 일괄 되돌린다.ctrl+r
: 되롤렸던 것을 되돌린다.
-
붙여넣기 및 치환
p
: 붙여넣기. 마지막에 지운 것을 붙여넣는다.(일반적으로 커서 다음에 붙여넣기 되지만, 줄 단위로 삭제한 것은 현재 커서의 다음 줄에 붙는다.)r
: 치환명령. 수정하고자 하는 단어에 커서를 올리고 r을 누른 뒤 수정을 원하는 문자를 클릭한다.R
: 하나 이상의 글자를 바꿀 수 있다. (r은 그 커서 한 자리만 수정한다면, R은 커서가 전진하면서 내용들을 치환한다)ce
: 단어의 중간위치부터 수정할 때 사용한다. 예를 들어, 단어 중간에 커서가 있을 때 커서로부터 단어 끝까지 수정한다. (현재 커서 치환 + insert모드로 수정)c$
: 현재 커서위치부터 치환 + insert모드로 수정한다. (d$을 한 후에 insert모드로 바꾼 것과 같다.):s/thee/the
: 커서가 있는 줄의 첫번째 ‘thee’를 ‘the’로 수정한다.- 만약에 제일 뒤에 /g를 붙인다면 현재 커서가 있는 줄에 해당되는 모든 ‘thee’를 치환한다.
:#,#s/thee/the
: 범위 줄 번호도 입력 가능하다.:%s/old/new/g
: 파일 전체 치환:%s/old/new/gc
: 파일 전체를 치환하는데 변환할지 말지, 프롬프트로 제어한다.- 정리하면 %는 현재 행에서 ‘파일 전체’로 범위를 확장시켜주고 마지막에 /g는 그 범위 내에서 전체를 치환할지 결정한다. 천천히 확인하면서 치환하고 싶다면 c까지 붙여준다.
-
위치와 파일 상태
CTRL + G
: 현재 파일 내에서의 위치G
: 파일의 마지막으로 이동{행번호}G
: 원하는 행으로 이동gg
: 파일의 시작으로 이동
-
검색하기
/{단어}
: Slash이후에 검색할 단어를 입력하고 Enter하면 찾을 수 있다. 그 다음에 n(다음) 또는 shift+n(이전)으로 동일한 결과물을 탐색할 수 있다./{단어}\c
: 대소문자 구분하지 않고 검색한다.:set ic
(ignorecase): 대소문자 구분을 안하고 찾기, 다시 구분을 하려면:set noic
: 대소문자 구분하기:set hls is
: hls(hlsearch)는 검색결과 하이라이트, is(incsearch)는 부분 검색 결과,:noh
: 검색결과 제거(set nohls
와 동일)- set xxx로 명령어들을 실행할 수 있고 앞에 no를 붙이면 옵션을 끌 수 있다.
?
: 위로 찾을 수 있다.Ctrl+o
: 이전 커서로 돌아간다.Ctrl+i
: 다음 커서로 돌아간다.
-
%
: 괄호 짝 찾기 (디버깅 할 때 현재 괄호 짝을 찾아야 하는 상황에 유용하다.) -
:!{shell명령어}
: 외부 명령어를 실행할 수 있다. 예를 들어서 :!ls를 하면 현재 파일 위치에서 ls로 파일들 리스트를 보는 것이다. -
파일
:w {파일이름}
: 저장하기.v
(visual mode) > 원하는 문자열 하이라이트 >:w {원하는 파일명}
으로 하이라이트 부분을 저장할 수 있다.:r {파일이름}
: 현재 커서 위치에 특정 파일 내용을 불러온다.:w 이후 Ctrl+d
: 명령어 탐색 가능
-
View
ctrl+f
: 다음 페이지(현재 화면의 다음 영역)ctrl+b
: 이전 페이지
Neovim + LazyVim
LazyVim을 설치했을 때 기본적으로 구성되어있는 단축키를 알아보자.
- Space : 명령어들을 보여준다.
내가 주로 사용하는 방법 기록해두기
- 화면상에 위치 손쉽게 옮기기 : s로 검색모드 시작 -> 원하는 단어 입력 -> 단축키로 이동
- 파일 탐색 : Space 2번
- 문자열 전체 파일에서 검색 : Space + sg(search Global)
- 현재 열려있는 파일 한번에 보기 : Space + ,
- 커멘트 히스토리(설정 기록 보기) : Space + :
- neovim config 파일 수정 : Space + fc
- 최근 열린 파일 : Space + fr
- 깃 로그 보기 : Space + fc
- 깃 status : Space + gs
- 깃 stach : Space + gS
- Color Scheme : Space + uC
- 터미널 보기 : Space + ft