상세 컨텐츠

본문 제목

Vim

TIL (Today I Learned)

by NayC 2022. 1. 13. 03:45

본문

728x90

공부의 시작 : 명령어와 Vim의 차이가 도대체 뭐지? 

-> 명령어는 말그대로 command하는 것 

     예를 들어 git '명령어'에는 뭐가 있는지 알아보려면 (mac 기준) 터미널에 git을 쳐보면 되는데 아래와 같이 정말 많은 명령어들이 나옴.

usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone             Clone a repository into a new directory
   init              Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add               Add file contents to the index
   mv                Move or rename a file, a directory, or a symlink
   restore           Restore working tree files
   rm                Remove files from the working tree and from the index
   sparse-checkout   Initialize and modify the sparse-checkout

examine the history and state (see also: git help revisions)
   bisect            Use binary search to find the commit that introduced a bug
   diff              Show changes between commits, commit and working tree, etc
   grep              Print lines matching a pattern
   log               Show commit logs
   show              Show various types of objects
   status            Show the working tree status

grow, mark and tweak your common history
   branch            List, create, or delete branches
   commit            Record changes to the repository
   merge             Join two or more development histories together
   rebase            Reapply commits on top of another base tip
   reset             Reset current HEAD to the specified state
   switch            Switch branches
   tag               Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch             Download objects and refs from another repository
   pull              Fetch from and integrate with another repository or a local branch
   push              Update remote refs along with associated objects

 

git은 파일 '상태 관리'를 도와주는 명령어

-> vim은 '텍스트 편집'을 도와주는 명령어로서 그 역할이 다르다. 

(--version, help 같은 건 너무 많이 쓰여서 공통적인 명령어로서 자리잡은 것)

 

Vim 특징

  • Vim은 유닉스 환경에서 전통적인 에디터인 Vi의 진보된 형태
  • 리눅스를 공부하는 학생이나 터미널 창에서 작업하는 서버 관리자, 키보드에서 손을 떠나기 싫은 개발자 모두에게 유용
  • Vim 에디터는 기본적으로 GUI모드가 아닌 CLI 모드이기 때문에 키보드의 입력으로 모든 것을 처리해야 함
  • GUI로 된 여타 툴 보다 처리 속도 또한 월등히 빠르고 가볍고 실행하는 PC나 서버에 부담을 주지 않기 때문에 여러개가 실행되더라도 부담 없는 가볍지만 매우 강력한 툴
  • 명령 모드가 표준임. 거의 모든 작업을 명령 모드로 하다가 가끔 편집 모드로 들어가서 입력 후 다시 명령 모드로 돌아오는 꼴로 많이 사용

 

 

Vim 에디터 모드

일반모드(Normal Mode) : 좀 더 편하게 편집을 할 수 있도록 여러 기능을 제공


명령행모드(Command Line Mode) or 콜론모드 (Colon Mode) : 일반모드에서  : (콜론)을 누르게 되면 명령행 모드로 진입, 일반모드의 기능과 중복되는 기능들이 존재하며 편집하는 파일을 직접적으로 컨트롤(저장, 종료 등)하는명령들을 내림, ESC를 누르면 일반모드로 전환

 

편집 모드(Insert Mode) : 일반모드에서 i, I, a, A, o, O, R 등의 키를 눌러서 진입이 되며 실제 텍스트에 대한 편집을 하게 되는 모드, ESC를 누르면 일반모드로 전환

:w 현재 편집하던 내용을 저장 명령행 모드 (이하 동일) 
:q 현재 편집내용을 끝내고 에디터를 종료

변경 내용이 있을 때는 :q로 종료할 수 없고 저장하지 않고 끝내기인 :q!로 종료해야 함
 
:wq 편집하던 내용을 저장하고 에디터를 종료  
! 강제로 해당명령어를 수행

 
a, A  a : 현재 커서위치에서 한 칸 뒤로 이동 후 입력모드로 전환
 A : 현재 형에서 끝으로 이동한 후 입력 모드로 전환
일반 모드 (에서 입력모드로 전환시) (이하 동일) 
 i, I i : 현재 커서위치에서 입력모드로 전환
I : 현재 행 맨 앞으로 이동 후, 입력모드로 전환
 
o, O o : 현재 행에서 아래 새로운 행 삽입 후 입력모드로 전환
O : 현재 행에서 위로 새로운 행 삽입 후 입력모드로 전환
 
R 수정 모드로 글자가 덮어 씌어짐.  
x 현재 커서의 문자를 삭제
Delete키와 동일한 기능
일반 모드 (이하 동일) 
dd 현재의 행을 잘라내기
잘라낸 행은 vim이 가진 고유한 저장소에 저장된다. dd 앞에 숫자를 붙이면 현재행에서 n의 숫자 만큼 잘라내기함
 
yy 현재 행을 복사
복사한 행은 vim이 가진 고유한 저장소에 저장된다. yy 앞에 숫자를 붙이면 현재행에서 n의 숫자 만큼 복사
 
p 가장 마지막에 복사 혹은 잘라내기한 내용을 해당 위치에서 부터 붙여넣기  
u undo 기능. Vim의 undo 기능은 매우 강력하여 편집기가 열린순간부터 편집한 모든 내용을 되돌리기 할 수 있음  
ctrl - R redo 기능.  
h 왼쪽 방향키와 같은 기능. 앞에 n의 숫자를 붙인 만큼 이동이 가능.  
j 아래쪽 방향키와 같은 기능. 앞에 n의 숫자를 붙인 만큼 이동이 가능.  
k 위쪽 방향키와 같은 기능. 앞에 n의 숫자를 붙인 만큼 이동이 가능.  
l 오른쪽 방향키와 같은 기능. 앞에 n의 숫자를 붙인 만큼 이동이 가능.  

cf) advanced 키는 참고 ( https://jangpd007.tistory.com/8?category=360498
    자주 쓰이는 명령어 참고 ( https://jangpd007.tistory.com/259?category=360498

 

연습

- 리눅스 계열 os에서는 바로 cmd 창으로 가능하나 윈도우에서는 따로 다운 받거나 git bash를 사용

vim

 

vim은 명령모드라 이 상태에서는 자판이 입력되지 않음 

-> i : 현재 커서위치에서 입력모드로 전환

-> 왼쪽 아래 insert가 뜨면서 입력이 가능해진다. 

다시 명령 모드로 돌리려면 esc

-> esc 누르자마자 왼쪽 하단에 insert가 사라짐을 확인 가능

:q!

(저장하지 않고 강제 종료)

-> 왼쪽 하단에 입력되며 엔터를 치면 아래와 같이 vim 모드를 나오게 된다. 

 

 

 

레슨 7까지 있는데 암기한다기보다 이거로 '연습'하면서 '익히면' 될 것 같다. 

vimtutor

vim 사용을 쉽도록 해주게 하는 vimtutor&amp;amp;amp;nbsp;

i 입력하면 아래 insert 모드로 되고, ffffffff 를 그때 입력할 수 있었다. (나올 때는 esc)

 

A는 잘 다가오지 않긴 한다. 

근데 vim tutor <ENTER> 하면 

-> bash: syntax error near unexpected token `newline' 에러가 나는데 <> 삭제해야 함

    <>는 placeholder(input에 아무 값이 없을때 입력을 돕기 위한 간단한 힌트(단어 또는 짧은 문장)) 이기에


cf) 

vim . 

vim test 

ls -> test 폴더가 만들어졌음을 확인 가능

 

 

 

 

 

출처 : https://jangpd007.tistory.com/6?category=360498 (손에 잡히는 Vim), https://deliciouslearning.tistory.com/215?category=660315 

728x90
반응형

'TIL (Today I Learned)' 카테고리의 다른 글

도커 실행  (0) 2022.01.18
API Gateway (feat. MSA)  (0) 2022.01.13
[JS] 구조분해 할당  (0) 2022.01.06
[JS] Shorthand property names  (0) 2022.01.06
[JS] 자바스크립트 실행 순서 (feat. 이벤트루프)  (0) 2021.12.02

관련글 더보기