태그 보관물: 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>!!command n번 줄에서 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 long short를 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 커서를 이전 단어의 첫 글자로 이동
W w와 같은(문장 부호 무시)
E e와 같음(문장 부호 무시)
B b와 같음(문장 부호 무시)
( 다음 문장의 처음으로 이동
) 이전 문장의 처음으로 이동
{ 다음 문단의 처음으로 이동
} 이전 문단의 처음으로 이동
H 커서를 화면 맨 위로 이동
M 커서를 중간으로 이동
L 커서를 맨 아래로 이동
^ f 한 화면 아래로 이동
^b 한 화면 위로 이동
^d 반 화면 아래로 이동
^u 반 화면 위로 이동
n^d n줄만큼 아래로 이동
n^u n줄만큼 위로 이동

편집 버퍼를 통한 이동

명령어 내용
:!command vi를 중단하고 지정한 셸 명령을 실행
:!! vi를 중단하고 이전의 셸 명령을 실행
:!sh vi를 중단하고 셸을 실행
:!csh vi를 중단하고 새로운 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 !command command의 결과를 지정한 줄 다음에 삽입
:r !command command의 결과를 현재의 줄 다음에 삽입
:r !look <pattern> 지정한 pattern으로 시작된 단어 삽입

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

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

줄 번호

명령어 내용
[n]G 줄번호 n으로 건너뛰기
1G 편집 버퍼의 첫 줄로 건너뛰기
G 편집 버퍼의 마지막 줄로 건너뛰기
:map g lG g가 lG와 같도록 매크로 정의