Post

VI 명령어

VI 명령어

VI 커맨드 라인 명령어

Command Line 명령어내용
vi ${FILE_NAME}vi를 시작하여 지정한 파일 편집
vi -r ${FILE_NAME}읽기 전용(read-only) 편집기로서 vi를 시작하여 지정한 파일 편집
view ${FILE_NAME}읽기 전용(read-only) 편집기로서 vi를 시작하여 지정한 파일 편집
vi -r되살릴 수 있는 모든 파일 이름 보여주기
vi -r ${FILE_NAME}vi를 시작하여 지정한 파일 되살리기

VI 편집 명령어

삽입

명령어내용
i입력 모드로 전환, 커서 위치 앞에서 삽입
I입력 모드로 전환, 현재 줄의 앞에 삽입
a입력모드로 전환, 커서 위치 뒤에서 삽입
A입력모드로 전환, 현재 줄의 뒤에 삽입
o입력모드로 전환, 현재 줄의 아래에서 시작
O입력모드로 전환, 현재 줄의 위에서 시작
:set autoindent자동으로 들여쓰기 적용
:set noautoindent자동으로 들여쓰기 미적용

편집하고 있는 파일을 바꾸기

명령어내용
:e ${FILE_NAME}지정한 파일의 편집
:e! ${FILE_NAME}지정한 파일의 편집, 자동 점검의 생략

내용 고치기

명령어내용
r단지 한 글자만 변경(입력 모드로 바뀌지 않음)
R입력하는 대로 겹쳐 써서 변경
s삽입에 의해 한 단어의 변경
S전체 줄을 삽입에 의한 변경
C커서의 위치로부터 줄 끝까지 삽입에 의한 변경
cc전체 줄을 삽입에 의한 변경
cmove커서부터 move까지 삽입에 의해 변경
~대,소문자 바꾸기

고치기의 취소 또는 반복

명령어내용
u편집 버퍼를 수정했던 마지막 명령을 취소
U현재 줄을 저장
.편집 버퍼를 수정했던 마지막 명령을 반복

문자 삭제

명령어내용
x커서가 있는 문자 삭제
X커서의 왼쪽 문자 삭제
D커서부터 줄의 끝까지 삭제
dd현재 줄의 전체 삭제
dmove커서부터 move까지 삭제
dG커서부터 편집 버퍼의 끝까지 삭제
d1G커서부터 편집 버퍼의 맨 앞까지 삭제
:<line>d지정한 줄의 삭제
:<line>,<line>d지정한 범위의 삭제

여러 줄의 복사와 이동

명령어내용
:<line>co<target>지정한 줄을 복사하여 target 줄 밑에 삽입
:<line>,<line>co<target>지정한 범위를 복사하여 target 줄 밑에 삽입
:<line>m<target>지정한 줄로 이동하여 target 줄 밑에 삽입
:<line>,<line>m<target>지정한 범위로 이동하여 target 줄 밑에 삽입

데이터를 처리하기 위한 셀 명령의 사용

명령어내용
<n>!!commandn번 줄에서 command의 실행
!move command커서부터 move까지 command 실행
!move fmt커서부터 move까지 줄들을 형식 맞추기

데이타 저장

명령어내용
:w원래의 파일로 데이타를 저장
:w ${FILE_NAME}지정한 파일로 데이타를 저장
:w»${FILE_NAME}지정한 파일에 데이타를 추가
:wq데이타를 저장하고 종료
:q!데이타를 저장하지 않고 종료

디스플레이 제어

명령어내용
:set number내부 줄 번호 보여주기
:set nonumber내부 줄 번호 숨기기

마지막으로 지운 것 복사하기

명령어내용
p마지막으로 지워진 것을 커서의 뒤/아래에 삽입
P마지막으로 지워진 것을 커서의 앞/위에 삽입
xp두 문자를 바꿈
deep두 단어를 바꿈
ddp두 줄을 바꿈

패턴 검색

명령어내용
/rexp지정된 정규 표현식에 대해 앞으로 검색
/이전의 패턴에 대해 앞으로 검색을 반복
?rexp지정된 정규 표현식에 대해 뒤로 검색
?이전의 패턴에 대해 뒤로 검색을 반복
n/ 또는 ? 명령에 대해 같은 방향으로 반복
N/ 또는 ? 명령에 대해 반대 반향으로 반복

약어의 사용

명령어내용
:ab short longshort를 long에 대한 약어로 변경
:ab현재 약어 목록을 표시
:una short약어 short를 표시

줄 길이의 조정

명령어내용
r<Return>문자를 뉴라인으로 변경
J아래 라인을 현재 라인과 합치기
:set wm=n오른쪽으로 n문자 위치에서 자동적으로 줄 나눔

커서 이동

명령어내용
h or <Left Key>커서를 한 칸 왼쪽으로 이동
j or <Down Key>커서를 한 칸 아래로 이동
k or <Up Key>커서를 한 칸 위로 이동
l or <Right Key>커서를 한 칸 오른쪽으로 이동
<Backspace>커서를 한 칸 왼쪽으로 이동
<Space>커서를 한 칸 오른쪽으로 이동
커서를 이전 줄의 처음으로 이동
+커서를 다음 줄의 처음으로 이동
<Return>커서를 다음 줄의 처음으로 이동
0커서를 현재 줄의 맨 앞으로 이동
$커서를 현재 줄의 맨 끝으로 이동
^커서를 현재 줄의 첫글자(공백이나 탭이 아닌)로 이동
w커서를 다음 단어의 첫 글자로 이동
e커서를 다음 단어의 끝 글자로 이동
b커서를 이전 단어의 첫 글자로 이동
Ww와 같은(문장 부호 무시)
Ee와 같음(문장 부호 무시)
Bb와 같음(문장 부호 무시)
(다음 문장의 처음으로 이동
)이전 문장의 처음으로 이동
{다음 문단의 처음으로 이동
}이전 문단의 처음으로 이동
H커서를 화면 맨 위로 이동
M커서를 중간으로 이동
L커서를 맨 아래로 이동
^ f한 화면 아래로 이동
^b한 화면 위로 이동
^d반 화면 아래로 이동
^u반 화면 위로 이동
n^dn줄만큼 아래로 이동
n^un줄만큼 위로 이동

편집 버퍼를 통한 이동

명령어내용
:!commandvi를 중단하고 지정한 셸 명령을 실행
:!!vi를 중단하고 이전의 셸 명령을 실행
:!shvi를 중단하고 셸을 실행
:!cshvi를 중단하고 새로운 C-셸을 실행
패턴에 의한 치환
명령어내용
:s/<pattern>/<replace>/현재 줄의 치환
:<line>s/<pattern>/<replace>지정한 줄의 치환
:<line>,<line>s/<pattern>/<replace>/정한 범위의 치환
:%s/<pattern>/<replace>/모든 줄의 치환
데이터 읽기
명령어내용
:<line>r ${FILE_NAME}파일의 내용을 지정한 줄 다음에 삽입
:r ${FILE_NAME}파일의 내용을 현재의 줄 다음에 삽입
:<line>r !commandcommand의 결과를 지정한 줄 다음에 삽입
:r !commandcommand의 결과를 현재의 줄 다음에 삽입
:r !look <pattern>지정한 pattern으로 시작된 단어 삽입

정규식에서 사용하는 패턴 기호

명령어내용
.뉴라인을 제외한 모든 단일 문자와 대응
*영 또는 그 이상의 선행 문자와 대응
^줄의 시작과 대응
$줄의 끝과 대응
<단어의 시작과 대응
>단어의 끝과 대응
[ ]묶여진 문자중의 하나와 대응
[^ ]묶여진 문자를 제외한 아무것하고나 대응
\이어지는 기호를 문자 그대로 해석

줄 번호

명령어내용
[n]G줄번호 n으로 건너뛰기
1G편집 버퍼의 첫 줄로 건너뛰기
G편집 버퍼의 마지막 줄로 건너뛰기
:map g lGg가 lG와 같도록 매크로 정의
This post is licensed under CC BY 4.0 by the author.