[리눅스] vi 명령어 관련
페이지 정보
작성자 관리자 작성일15-06-24 21:49 조회2,743회 댓글0건본문
Vi 사용하기
Vi 시작하기
$ vi : vi 시작하기
$ vi aaa.txt : aaa.txt 파일을 편집하면서 vi 시작
$ vi -R aaa.txt : 읽기 전용으로 열기
Esc : 또는 /
편집상태 →
← 명령대기상태
(Esc모드) →
← 명령줄상태
삽입명령어
i,a,A,I,o,O Esc 또는 Enter
명령대기상태 → 편집상태 : 삽입명령어 (아래참조.)
편집상태 → 명령대기상태 : Esc글쇠.
명령대기상태 → 명령줄상태 : : 또는 / (아래참조)
명령줄상태 → 명령대기상태 : Esc 또는 Enter (아래참조)
커서의 이동
h, l, j, k : 왼쪽(←, Back space), 오른쪽(→, space), 위(↑), 아래(↓)
b, w : 이전 단어의 첫 글자로 / 다음 단어의 첫 글자로 이동.
B, W : 이전 단어의 첫 글자로 / 다음 단어의 첫 글자로 이동. (문장부호 무시)
e : 다음 단어의 끝 글자로 이동.
E : 다음 단어의 끝 글자로 이동. (문장부호 무시)
H, M, L : 화면의 맨 위/ 중간 / 맨 아래로
0 : 그 줄의 맨 처음으로 (숫자 0이다.)
$ : 그 줄의 맨 끝으로
+ : 다음 줄의 처음으로
- : 윗 줄의 처음으로
3| : 현재 줄의 3번째 열로
4H : 화면 상의 처음 줄부터 4줄 밑으로
4L : 화면 상의 마지막 줄부터 4줄 위로
(, ) : 이전 문장의 시작으로 / 다음 문장의 시작으로
{, } : 이전 문단의 시작으로 / 다음 문단의 시작으로
[[, ]] : 이전 섹션의 시작으로 / 다음 섹션의 시작으로
편집 버퍼를 통한 이동
^F, ^B : 한 화면 앞으로 / 뒤로 (^는 Ctrl글쇠를 의미.)
^D, ^U : 반 화면 앞으로 / 뒤로
4^B : 4화면 위로 이동
4^F : 4화면 아래로 이동
7^U : 7줄 위로 이동
7^D : 7줄 아래로 이동
^Y : 커서는 현재 위치 그대로 화면만 한 줄씩 아래로 이동
^E : 커서는 현재 위치 그대로 화면만 한 줄씩 위로 이동
행 단위 이동
:0 : 파일의 첫 번째 행으로 가기 (숫자 0)
:10 : 10번째 행으로 가기
:$ : 파일의 마지막 행으로 가기
G : 파일의 마지막 행으로 가기
10G : 10번째 행으로 가기
삽입명령어
i : 커서 위치부터 삽입 시작
a : 커서 위치 오른쪽부터 삽입 시작
A : 현재 줄의 맨 끝 부터 삽입 시작
I : 현재 줄의 맨 처음 부터 삽입 시작
o : 커서 아래에 행 삽입
O : 커서 위에 행 삽입
삭제명령
x : 현재 커서위치의 한 문자 삭제
X : 현재 커서 왼쪽의 한 문자 삭제
dd : 한 줄 지우기
4dd : 4 줄 지우기
dw : 한 단어 지우기
d2w : 2 단어 지우기
D : 커서 오른쪽 행 삭제
:5 d : 5 째 행 삭제
:5,10 d : 5-10 째 행 삭제
파일의 저장 및 종료
:wq : 저장 후 vi 종료
:w : 저장 (종료는 하지 않고 계속 편집)
:q! : 저장하지 않고 vi 빠져나가기
:w filename : filename으로 저장 후 계속 편집
ZZ : 변경사항 저장 후 vi 종료
내용의 복사 및 이동
yy : 현재의 행 복사
5yy : 현재의 행 위치부터 5행 복사
p : 아래(오른쪽)에 붙여넣기
P : 위(왼쪽)에 붙여넣기
f4yy : 현재의 행 위치부터 4행을 'f'라는 이름의 버퍼에 복사
fp : 'f'라는 이름의 버퍼에 복사된 내 용을 현재 행 위치에 붙여넣기
:3 co 7 : 3 행을 7행 다음으로 복사
:1,3 co 7 : 1-3 행을 7행 다음으로 복사
:3 m 7 : 3 행을 7행 다음으로 이동
:1,3 m 7 : 1-3 행을 7행 다음으로 이동
내용 고치기
J : 현재 행과 아래 행 결합
3J : 3줄 합치기
u : 이전 명령 취소
cw : 단어 변경
cc : 행 변경
C : 커서 오른쪽의 행 변경
s : 커서가 위치한 문자열 대체
r : 한 글자만 변경 (입력 모드로 바뀌지 않음)
R : 입력하는 대로 겹쳐써서 변경
xp : 커서 위치 문자와 오른쪽 문자 교환
- : 문자형(대,소문자) 변경
U : 행 변경사항 취소
:u : 이전의 최종행 취소
명령 취소 및 반복
. : 마지막 명령 반복
2. : 마지막 명령 2회 반복
u : 마지막 명령 취소
U : 현재 줄을 저장
행 번호 설정 및 화면표시
:set nu : 행 번호 표시
:set nonu : 행 번호 숨기기
:= : 현재 줄번호 보여주기
:/pattern/ = : pattern이 위치한 줄번호 보여주기
시스템이 다운된 후에 파일 되살리기
vi -r : 되살릴 수 있는 모든 파일 이름 보여주기
vi -r file.txt : vi를 시작하여 지정한 파일 되살리기
다른 파일을 파일 내로 삽입
:r filename : 커서 다음에 파일 삽입
:20 r filename : 파일을 20번째 행 다음에 삽입
새로운 파일 편집하기
:e fine.txt : file.txt 편집하기
:e! : 현재의 편집중인 내용 무시하고 가장 최근에 편집한 내용 다시 편집하기
다중 편집하기
% vi file1 file2 file3
혹은
:e file1 file2 file3
했을 때,
:args : 편집 중인 파일목록 보여주기
:n[ext] : 다음 파일로 넘어가기
:prev[ious] : 이전 파일로 넘어가기 (단 편집 중인 파일이 저장되지 않으면 다음 파일로 넘어갈 수 없다.)
문자열 탐색
/aaa : 'aaa' 찾기 (현재 위치부터 뒤로)
?aaa : 'aaa' 역방향 찾기 (현재 위치부터 앞으로)
/ : 가장 최근에 검색한 문자열 다시 검색
? : 가장 최근에 검색한 문자열 다시 역방향 검색
:set noh : 문자열 검색 후 문자열 강조 끄기
치환
vi에서 치환은 정규표현식이 이용된다. (실제로 이 상태에서 실행하는 명령어는 ed나 ex라는 프로그램이 처리
하게 된다. 그래서 보통 이 상태를 "ed-모드"라고 한다.) 문서에서 원하는 패턴을 찾으려면 바로 위에 '문자
열 탐색'에서 설명된 바와 같이 /문자열 이나 ?문자열 을 사용한다. 문자치환 명령은 다음과 같다.
[형식] :범위s/변경전/변경후/수정자
'범위'는 명령이 실행될 범위(예: 10,20 이면 10행 부터 20행 까지)를 나타낸다. 's'는 치환(substitute)
의 약자이며 '수정자'는 치환 명령의 세부사항을 결정한다. 필요한 것만 뒤에 적어주면 된다. (중복 가능)
g (global) - 한 줄에서 일치하는 부분을 여러개 찾았을 때 전부 치환한다. 이것을 사용하지 않으면 처음 것
만 치환.
c (confirm) - 만족하는 정규표현식을 찾았을 때 치환하기 전에 확인한다.
i (ignore-case) - 대소문자를 구별하지 않는다.
"변경전"과 "변경후"에 치환할 내용을 입력한다. "변경전"에 정규표현식을 적는다. 정규표현식으로 ., *,
^, $, [], \(...\), \<...\>, POSIX.2 단축 표현을 사용할 수 있다. 여기서 여러 문자를 묶여서 단위를
만들고 찾은 내용을 기억하는 특수문자가 \(, \)임을 주의해야 한다. 반대로 (, )가 일반문자이다. vim(VI i
Mproved)에서는 vi에 추가로 |, +, (?와 같은) =, {n,m}을 사용할 수 있지만, 앞에 \ 를 붙여야 한다.
또, vim에는 \i, \k, \p, \s 등의 단축 표현들이 있다.
"변경후"에 \n 과 & 를 사용할 수 있다. \n 는 "변경전"에서 n번째 \(...\) 에 대응하는 부분이고, &
는 "변경전"에 만족한 전체를 나타낸다. 예를 들어,
:%s/\([0-9][0-9]*\) \([Cc]hapter\)/\2 \1/
는 문서에서 12 Chapter같은 부분을 Chapter 12와 같이 치환하고,
:%s/F[1-9][12]*/&/g
는 HTML 문서에서 "F1" ~ "F12"란 단어 모두를 굵은 체로 바꿉니다. (주의! &는 정규표현식의 특수문자는 아
니지만 vi의 특수문자이므로, 문자그대로의 &를 사용하려면 대신 \& 를 사용해야 한다.) 이외에도 (뒤를 모두
대문자로) \u 나 (뒤를 모두 소문자로) \l 같은 기능이 있다.
:%s/aaa/bbb/g - 파일 전체(g)에서 'aaa'을 'bbb' 로 치환
:%s/^M//g - 파일 전체(g)에서 ^M 을 삭제. ^M은 Ctrl+V+Enter로 입력한다.
:s/aaa/bbb/ - 현재 행에서 'aaa'을 'bbb' 로 치환
:1,10 s/aaa/bbb/ - 1행부터 10행 까지 'aaa'을 'bbb' 로 치환
:1,. s/str/rep/ - 1부터 현재행까지 'aaa'를 'bbb' 로 전부 바꾸기
:g/감자/s//바위/gc - 각 발생 확인 후 대체
주의할 점은 치환명령어가 / 문자로 각 부분을 구분하기때문에 "변경전"이나 "변경후"에 / 문자를 사용하려면
\/ 같이 써야한다.
필요하다면 / 대신 다른 문자를 사용해도 된다. 예를 들어,
:%s/\/usr\/local\/bin\//\/usr\/bin\//g
대신
:%s#/usr/local/bin/#/usr/bin/#g
가 알아보기 더 쉽다.
Vi 시작하기
$ vi : vi 시작하기
$ vi aaa.txt : aaa.txt 파일을 편집하면서 vi 시작
$ vi -R aaa.txt : 읽기 전용으로 열기
Esc : 또는 /
편집상태 →
← 명령대기상태
(Esc모드) →
← 명령줄상태
삽입명령어
i,a,A,I,o,O Esc 또는 Enter
명령대기상태 → 편집상태 : 삽입명령어 (아래참조.)
편집상태 → 명령대기상태 : Esc글쇠.
명령대기상태 → 명령줄상태 : : 또는 / (아래참조)
명령줄상태 → 명령대기상태 : Esc 또는 Enter (아래참조)
커서의 이동
h, l, j, k : 왼쪽(←, Back space), 오른쪽(→, space), 위(↑), 아래(↓)
b, w : 이전 단어의 첫 글자로 / 다음 단어의 첫 글자로 이동.
B, W : 이전 단어의 첫 글자로 / 다음 단어의 첫 글자로 이동. (문장부호 무시)
e : 다음 단어의 끝 글자로 이동.
E : 다음 단어의 끝 글자로 이동. (문장부호 무시)
H, M, L : 화면의 맨 위/ 중간 / 맨 아래로
0 : 그 줄의 맨 처음으로 (숫자 0이다.)
$ : 그 줄의 맨 끝으로
+ : 다음 줄의 처음으로
- : 윗 줄의 처음으로
3| : 현재 줄의 3번째 열로
4H : 화면 상의 처음 줄부터 4줄 밑으로
4L : 화면 상의 마지막 줄부터 4줄 위로
(, ) : 이전 문장의 시작으로 / 다음 문장의 시작으로
{, } : 이전 문단의 시작으로 / 다음 문단의 시작으로
[[, ]] : 이전 섹션의 시작으로 / 다음 섹션의 시작으로
편집 버퍼를 통한 이동
^F, ^B : 한 화면 앞으로 / 뒤로 (^는 Ctrl글쇠를 의미.)
^D, ^U : 반 화면 앞으로 / 뒤로
4^B : 4화면 위로 이동
4^F : 4화면 아래로 이동
7^U : 7줄 위로 이동
7^D : 7줄 아래로 이동
^Y : 커서는 현재 위치 그대로 화면만 한 줄씩 아래로 이동
^E : 커서는 현재 위치 그대로 화면만 한 줄씩 위로 이동
행 단위 이동
:0 : 파일의 첫 번째 행으로 가기 (숫자 0)
:10 : 10번째 행으로 가기
:$ : 파일의 마지막 행으로 가기
G : 파일의 마지막 행으로 가기
10G : 10번째 행으로 가기
삽입명령어
i : 커서 위치부터 삽입 시작
a : 커서 위치 오른쪽부터 삽입 시작
A : 현재 줄의 맨 끝 부터 삽입 시작
I : 현재 줄의 맨 처음 부터 삽입 시작
o : 커서 아래에 행 삽입
O : 커서 위에 행 삽입
삭제명령
x : 현재 커서위치의 한 문자 삭제
X : 현재 커서 왼쪽의 한 문자 삭제
dd : 한 줄 지우기
4dd : 4 줄 지우기
dw : 한 단어 지우기
d2w : 2 단어 지우기
D : 커서 오른쪽 행 삭제
:5 d : 5 째 행 삭제
:5,10 d : 5-10 째 행 삭제
파일의 저장 및 종료
:wq : 저장 후 vi 종료
:w : 저장 (종료는 하지 않고 계속 편집)
:q! : 저장하지 않고 vi 빠져나가기
:w filename : filename으로 저장 후 계속 편집
ZZ : 변경사항 저장 후 vi 종료
내용의 복사 및 이동
yy : 현재의 행 복사
5yy : 현재의 행 위치부터 5행 복사
p : 아래(오른쪽)에 붙여넣기
P : 위(왼쪽)에 붙여넣기
f4yy : 현재의 행 위치부터 4행을 'f'라는 이름의 버퍼에 복사
fp : 'f'라는 이름의 버퍼에 복사된 내 용을 현재 행 위치에 붙여넣기
:3 co 7 : 3 행을 7행 다음으로 복사
:1,3 co 7 : 1-3 행을 7행 다음으로 복사
:3 m 7 : 3 행을 7행 다음으로 이동
:1,3 m 7 : 1-3 행을 7행 다음으로 이동
내용 고치기
J : 현재 행과 아래 행 결합
3J : 3줄 합치기
u : 이전 명령 취소
cw : 단어 변경
cc : 행 변경
C : 커서 오른쪽의 행 변경
s : 커서가 위치한 문자열 대체
r : 한 글자만 변경 (입력 모드로 바뀌지 않음)
R : 입력하는 대로 겹쳐써서 변경
xp : 커서 위치 문자와 오른쪽 문자 교환
- : 문자형(대,소문자) 변경
U : 행 변경사항 취소
:u : 이전의 최종행 취소
명령 취소 및 반복
. : 마지막 명령 반복
2. : 마지막 명령 2회 반복
u : 마지막 명령 취소
U : 현재 줄을 저장
행 번호 설정 및 화면표시
:set nu : 행 번호 표시
:set nonu : 행 번호 숨기기
:= : 현재 줄번호 보여주기
:/pattern/ = : pattern이 위치한 줄번호 보여주기
시스템이 다운된 후에 파일 되살리기
vi -r : 되살릴 수 있는 모든 파일 이름 보여주기
vi -r file.txt : vi를 시작하여 지정한 파일 되살리기
다른 파일을 파일 내로 삽입
:r filename : 커서 다음에 파일 삽입
:20 r filename : 파일을 20번째 행 다음에 삽입
새로운 파일 편집하기
:e fine.txt : file.txt 편집하기
:e! : 현재의 편집중인 내용 무시하고 가장 최근에 편집한 내용 다시 편집하기
다중 편집하기
% vi file1 file2 file3
혹은
:e file1 file2 file3
했을 때,
:args : 편집 중인 파일목록 보여주기
:n[ext] : 다음 파일로 넘어가기
:prev[ious] : 이전 파일로 넘어가기 (단 편집 중인 파일이 저장되지 않으면 다음 파일로 넘어갈 수 없다.)
문자열 탐색
/aaa : 'aaa' 찾기 (현재 위치부터 뒤로)
?aaa : 'aaa' 역방향 찾기 (현재 위치부터 앞으로)
/ : 가장 최근에 검색한 문자열 다시 검색
? : 가장 최근에 검색한 문자열 다시 역방향 검색
:set noh : 문자열 검색 후 문자열 강조 끄기
치환
vi에서 치환은 정규표현식이 이용된다. (실제로 이 상태에서 실행하는 명령어는 ed나 ex라는 프로그램이 처리
하게 된다. 그래서 보통 이 상태를 "ed-모드"라고 한다.) 문서에서 원하는 패턴을 찾으려면 바로 위에 '문자
열 탐색'에서 설명된 바와 같이 /문자열 이나 ?문자열 을 사용한다. 문자치환 명령은 다음과 같다.
[형식] :범위s/변경전/변경후/수정자
'범위'는 명령이 실행될 범위(예: 10,20 이면 10행 부터 20행 까지)를 나타낸다. 's'는 치환(substitute)
의 약자이며 '수정자'는 치환 명령의 세부사항을 결정한다. 필요한 것만 뒤에 적어주면 된다. (중복 가능)
g (global) - 한 줄에서 일치하는 부분을 여러개 찾았을 때 전부 치환한다. 이것을 사용하지 않으면 처음 것
만 치환.
c (confirm) - 만족하는 정규표현식을 찾았을 때 치환하기 전에 확인한다.
i (ignore-case) - 대소문자를 구별하지 않는다.
"변경전"과 "변경후"에 치환할 내용을 입력한다. "변경전"에 정규표현식을 적는다. 정규표현식으로 ., *,
^, $, [], \(...\), \<...\>, POSIX.2 단축 표현을 사용할 수 있다. 여기서 여러 문자를 묶여서 단위를
만들고 찾은 내용을 기억하는 특수문자가 \(, \)임을 주의해야 한다. 반대로 (, )가 일반문자이다. vim(VI i
Mproved)에서는 vi에 추가로 |, +, (?와 같은) =, {n,m}을 사용할 수 있지만, 앞에 \ 를 붙여야 한다.
또, vim에는 \i, \k, \p, \s 등의 단축 표현들이 있다.
"변경후"에 \n 과 & 를 사용할 수 있다. \n 는 "변경전"에서 n번째 \(...\) 에 대응하는 부분이고, &
는 "변경전"에 만족한 전체를 나타낸다. 예를 들어,
:%s/\([0-9][0-9]*\) \([Cc]hapter\)/\2 \1/
는 문서에서 12 Chapter같은 부분을 Chapter 12와 같이 치환하고,
:%s/F[1-9][12]*/&/g
는 HTML 문서에서 "F1" ~ "F12"란 단어 모두를 굵은 체로 바꿉니다. (주의! &는 정규표현식의 특수문자는 아
니지만 vi의 특수문자이므로, 문자그대로의 &를 사용하려면 대신 \& 를 사용해야 한다.) 이외에도 (뒤를 모두
대문자로) \u 나 (뒤를 모두 소문자로) \l 같은 기능이 있다.
:%s/aaa/bbb/g - 파일 전체(g)에서 'aaa'을 'bbb' 로 치환
:%s/^M//g - 파일 전체(g)에서 ^M 을 삭제. ^M은 Ctrl+V+Enter로 입력한다.
:s/aaa/bbb/ - 현재 행에서 'aaa'을 'bbb' 로 치환
:1,10 s/aaa/bbb/ - 1행부터 10행 까지 'aaa'을 'bbb' 로 치환
:1,. s/str/rep/ - 1부터 현재행까지 'aaa'를 'bbb' 로 전부 바꾸기
:g/감자/s//바위/gc - 각 발생 확인 후 대체
주의할 점은 치환명령어가 / 문자로 각 부분을 구분하기때문에 "변경전"이나 "변경후"에 / 문자를 사용하려면
\/ 같이 써야한다.
필요하다면 / 대신 다른 문자를 사용해도 된다. 예를 들어,
:%s/\/usr\/local\/bin\//\/usr\/bin\//g
대신
:%s#/usr/local/bin/#/usr/bin/#g
가 알아보기 더 쉽다.
댓글목록
등록된 댓글이 없습니다.