개인용 Vi 커맨드 정리

mosad2334·2021년 10월 31일
0
post-thumbnail

개발용 블로그 시작하면 제일 첫 째로 필요하다고 생각했던 vi 커맨드 cheet sheet 개인용 정리.

아래 기본적 내용은 아래 링크의 치트시트를 참고합니다.
👉 원본 치트시트

잘 쓰고있던 것은 💚 표시
외우지 못했지만 필요했거나, 필요해 보이는 커맨드는 💗 표시

Input commands (end with Esc)

  • a Append after cursor
  • i Insert before cursor 💚
  • o Open line below
  • O Open line above
  • :r file Insert file after current line

Change commands (Input mode)

  • 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
    • cc랑 정확한 차이점이 무엇인지 찾지 못함.
  • . 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
    • x 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으로 사용해야 합니다.

  1. v를 눌러 visual mode로 진입 후 원하는 내용만큼 블럭처리.
  2. :'<,'>norm [실행할 내용]

실행하면 블럭처리한 라인 전부 내용이 하나씩 실행됩니다.

Examples

해당 줄에 전부 # 주석 삽입

:'<,'>norm i#

해당 줄에 전부 앞 글자 하나씩 삭제

:'<,'>norm x1
profile
Web Developer / Read "KEEP CALM CARRY ON" Poster

0개의 댓글