개발용 블로그 시작하면 제일 첫 째로 필요하다고 생각했던 vi 커맨드 cheet sheet 개인용 정리.
아래 기본적 내용은 아래 링크의 치트시트를 참고합니다.
👉 원본 치트시트
잘 쓰고있던 것은 💚 표시
외우지 못했지만 필요했거나, 필요해 보이는 커맨드는 💗 표시
- a Append after cursor
- i Insert before cursor 💚
- o Open line below
- O Open line above
- :r file Insert file after current line
- cw Change word (Esc)
- cc Change line (Esc) - blanks line
- c$ Change to end of line
- rc Replace character with c
- R Replace (Esc) - typeover
- s Substitute (Esc) - 1 char with string
- S Substitute (Esc) - Rest of line with text
- . Repeat last change
** change : 삭제 후 insert 모드 진입
Changes during insert mode
<ctrl>h Back one character
<ctrl>w Back one word 💗
<ctrl>u Back to beginning of inse
File management commands
- :w name Write edit buffer to file name
- :wq Write to file and quit 💚
- :q! Quit without saving changes
- ZZ Same as :wq
- :sh Execute shell commands (<ctrl>d)
Window motions
-
<ctrl>d Scroll down (half a screen) 💗
-
<ctrl>u Scroll up (half a screen) 💗
-
<ctrl>f Page forward 💗
-
<ctrl>b Page backward 💗
-
/string Search forward 💚
-
?string Search backward 💚
-
<ctrl>l Redraw screen
-
<ctrl>g Display current line number and file information 💗
-
n Repeat search 💚
-
N Repeat search reverse 💚
-
G Go to last line 💚
-
n G Go to line n 💚
-
:n Go to line n 💗💗
-
z<CR> Reposition window: cursor at top
-
z. Reposition window: cursor in middle 💗
-
z- Reposition window: cursor at bottom
-
gg Go to first line. G 커맨드의 첫줄버전.💚
Cursor motions
- H Upper left corner (home)
- M Middle line
- L Lower left corner
- h Back a character 💗
- j Down a line 💗
- k Up a line 💗
- ^ Beginning of line
- $ End of line
- l Forward a character 💗
- w One word forward 💗
- b Back one word 💗
- fc Find c
- ; Repeat find (find next c)
Deletion commands
- dd or ndd Delete n lines to general buffer 💚
- dw Delete word to general buffer
- dnw Delete n words
- d) Delete to end of sentence
- db Delete previous word
- D Delete to end of line
- x Delete character 💚
Recovering deletions
- p Put general buffer after cursor 💚
- P Put general buffer before cursor
Undo commands
- u Undo last change 💚
- U Undo all changes on line
Rearrangement commands
- yy or Y Yank (copy) line to general buffer 💚
- “z6yy Yank 6 lines to buffer z
- yw Yank word to general buffer
- “a9dd Delete 9 lines to buffer a
- “A9dd Delete 9 lines; Append to buffer a
- “ap Put text from buffer a after cursor
- p Put general buffer after cursor 💚
- P Put general buffer before cursor
- J Join lines
Parameters
- :set list Show invisible characters 💗
- :set nolist Don’t show invisible characters
- :set number Show line numbers 💚
- :set nonumber Don’t show line numbers 💚
- :set autoindent Indent after carriage return
- :set noautoindent Turn off autoindent
- :set showmatch Show matching sets of parentheses as they are typed
- :set noshowmatch Turn off showmatch
- :set showmode Display mode on last line of screen
- :set noshowmode Turn off showmode
- :set all Show values of all possible parameters 💗
Move text from file old to file new
- vi old
- “a10yy yank 10 lines to buffer a
- :w write work buffer
- :e new edit new file
- “ap put text from a after cursor
- :30,60w new Write lines 30 to 60 in file new
Regular expressions (search strings)
- ^ Matches beginning of line
- $ Matches end of line
- . Matches any single character
- * Matches any previous character
- .* Matches any character
Search and replace commands
Syntax:
:\[address]s/old_text/new_text/
Address components:
- . Current line
- n Line number n
- .+m Current line plus m lines
- $ Last line
- /string/ A line that contains "string"
- % Entire file
- [addr1],[addr2] Specifies a range
더 자세히 👉 Find and Replace in Vim / Vi
Examples 💗
Comment lines (add # before the line) from 5 to 20:
:5,20s/^/#/
Uncomment lines from 5 to 20, revert the previous changes:
:5,20s/^#//
Replace all instances of ‘apple’, ‘orange’, and ‘mango’ with ‘fruit’:
:%s/apple\|orange\|mango/fruit/g
Remove trailing whitespace at the end of each line:
:%s/\s\+$//e
** 파일에서 선택 단어를 일괄적으로 치환할 때 사용. 💚
EX) :%s/[바꿀 단어]/[바뀔 단어]/g
:5,20s/^/#/
:5,20s/^#//
Visual Mode
vi 미지원, vim으로 사용해야 합니다.
visual mode 진입
- Character mode: v (lower-case) 💚💚💚
- Line mode: V (upper-case)
- Block mode: Ctrl+v
visual mode 진입 후
- c 변경
- d, x 삭제 💚💚💚
- y 복사 💚💚💚
- <, > 들여쓰기 조절
norm 커맨드
vi 미지원, vim으로 사용해야 합니다.
- v를 눌러 visual mode로 진입 후 원하는 내용만큼 블럭처리.
- :'<,'>norm [실행할 내용]
실행하면 블럭처리한 라인 전부 내용이 하나씩 실행됩니다.
Examples
해당 줄에 전부 # 주석 삽입
:'<,'>norm i#
해당 줄에 전부 앞 글자 하나씩 삭제
:'<,'>norm x1