vi edit command table

|
입력

a : 커서 위치 다음 칸부터 입력
 i : 커서의 위치에 입력
o : 커서의 다음 행에 입력
s : 커서 위치의 한 자를 지우고 입력

이동

h : 왼쪽으로 이동
l : 오른쪽으로 이동
j : 아래 행으로 이동
k : 위 행으로 이동
w or W 다음 단어의 첫 글자로 이동
b or B: 다음 단어의 첮 글자로 이동
^ : 그 행의 첫 글자로 이동
$ : 그 행의 마지막 글자로 이동
M 커서를 화면의 중앙으로 이동
z. : 현재 행을 화면의 중앙으로 이동
gg : 문서의 맨 첫 행으로 이동
g : 문서의  맨 마지막 행으로 이동
:[n] : n 행으로 이동

삭제

x, dl : 커서 위치의 글자 삭제
dw : 한 단어를 삭제
D,d$ : 커서 위치부터 행의 끝까지 삭제
dd : 커서가 있는 행을 삭제

잘라내기

(17개의 레지스터 보유 dd로 지움과 동시에 들어감 stack 형식으로 입력)
ex모드에서 : reg 명령으로 볼 수 있다.
바로 이전에 지워 레지스터에 들어있는 내용은 p 명령으로 붙여넣기 가능
복사 yy
특정한 레지스터에 있는 내용을 붙이는 방법 -> 2번 레지스터 = 2p

블록 지정

원하는 위치에서 v를 누르고 j키로 커서를 아래로 이동시키면 블록 형성
지우기 d 복사 y
사각 블록 지정 : 컨트롤 + v
블록지정 후 탭 삽입 : >
블록지정 후 탭 제거 : <

되살리기

되돌리기 : u (명령취소)
되살리기 : 컨트롤 + r

문자열 탐색

/[문자열] 이후 n은 다음 매칭 N은 이전매칭

문자열 치환
old - > new :%s/old/new/g
문서 전체에서 제일 처음 매칭되는 행의 문자열만 치환
:s/old/new/g
2행에서 4행 사이에 매칭되는 문자열을 치환
:2,3s/old/new/g
행 범위에 아래와 같이 c를 두게 되면 매칭되는 문자열에 대해 치환할 것인지 사용자에게 물어본다.
:%s/old/new/gc

특정한 패턴이 있는 행에 대해서만 치환하게 하려면 다음과 같은 형식 사용
:[범위]/[패턴]/[매칭 문자열]/[치환 문자열]/[행 범위]
주석 부분은 수정 하지 않고 변수명 치환 :g/\(^[^#].*TEST\|TEST\)/s/TEST/STR/g
#으로 시작하지 않는 TEST 문자열과 TEST로 시작하는 문자열
And