Vim에서 제공하는 기본 기능

혹시 이 글을 읽고 Vim에 관심을 가지게 되셨나요?
Vim에 관심있는 사람들을 위한 Discord 커뮤니티
vim.kr 바로 여러분들을 위한 커뮤니티입니다.

Disclaimer : 혼선을 방지하기 위해 이 문서에서는 키맵을 설명할때 대/소문자를 구분해서 표기함.

  • CTRL/SUPER/ALT 키를 동시에 입력하는 경우에는 CTRL + SHIFT + A 와 같이 표기

Buffer 관련 기능

command

  • :e(dit) <file> - 일반적으로는 파일을 편집하기 위해 사용되는 커맨드이지만, 외부 프로그램을 통해서 변경된 파일을 현재 버퍼에서 새로고침할때도 사용할 수 있다.
  • :term(inal) - Vim 화면을 띄워놓고 shell 명령어를 입력할 수 있는 프롬프트를 열어준다. Vim/Neovim 각각 동작하는 방식이 미묘하게 다르다.
    • Vim의 경우 : 화면이 수직으로 분할되어 terminal buffer가 열린다.
    • Neovim의 경우 : 현재 활성화된 버퍼가 terminal buffer가 된다.
      • 소스코드를 편집하다가 말고 현재 버퍼를 terminal buffer로 활용하는게 이상하게 느껴질 수 있지만, 커맨드 모드에서는 alias 커맨드를 사용할 수 없다. alias 커맨드를 tmux window를 벗어나지도 않고, 지금 띄우고 있는 터미널탭을 이탈하지 않고도 사용할 수 있으려면 선택가능한 유일한 선택지가 :term 명령어로 터미널 버퍼를 띄우고 거기서 alias 커맨드를 실행하는 것이다.
  • :%w !pbcopy - 현재 버퍼에 있는 모든 소스코드를 클립보드에 쓰기 연산을 실행할 수 있다. 즉, 복사/붙여넣기를 아주 간단하게 할 수 있다. 소스코드를 붙여넣기할때는 당연히 (SUPER or Ctrl) + V 키를 입력해주면 된다.
    • Neovim의 경우에도 :wshada/:rshada를 활용한 트릭으로 가능하지만, w !pbcopy를 이용한 트릭이 훨씬 편하다.
    • 이는 visual mode에서도 사용할 수 있는데, :'<'>w !pbcopy 와 같이 사용할 수 있다.
  • :! <command> % - 현재 버퍼가 열고 있는 파일을 커맨드라인에 파라미터로 넘겨줄 수 있다. 여기서 %가 현재 버퍼가 열고 있는 파일을 나타낸다.
    • ex) :! poetry run pylint % - 현재 버퍼가 열고 있는 파일을 린터로 분석
    • ex2) :! poetry run python manage.py test % - 현재 버퍼가 열고 있는 파일의 테스트 코드를 실행

keymap

  • CTRL + w + H/J/K/L : h/j/k/l 표기법을 보면 알 수 있듯이 현재 활성화된 버퍼를 화면의 맨왼쪽/맨아래쪽/맨위쪽/맨오른쪽으로 위치를 옮김. 왼쪽/오른쪽으로 옮길 경우 버퍼의 높이가 화면 전체의 높이로 조정이 되고, 위쪽/아래쪽으로 옮길 경우 버퍼의 너비가 화면 전체의 너비로 조정이 됨.
  • CTRL + w + Ctrl + r / Ctrl + R : 버퍼의 위치를 위아래 혹은 좌우로 rotate하면서 swap한다.