Post

[Linux] Vi Editor

[Linux] Vi Editor

Vi, VIM(Vi IMproved=향상된 VI)

  • 빠른 편집 속도가 특징인 리눅스의 대표적인 에디터이다.

  • viVisual의 약자이다

명령어설명예제
vi {파일명}파일열기, 작성vi test.txt
vi +{행번호} {파일명}파일을 열고, 입력한 행으로 커서 이동vi -100 test.txt
vi +/“{검색 문자열}” {파일명}“문자열”의 처음발생 단어부터 열기vi -/”adc” test.txt
vi –r {파일명}손상된 파일 회복vi -r test.txt
view {파일명}읽기 전용으로 열기기view test.txt

수정 파일 열기

  • vi {파일명} 명령어로 입력했을 때, 입력한 파일명이 실제 존재 한 경우 파일을 수정.

신규 파일 생성

  • vi {파일명} 명령어로 입력했을 때, 입력한 파일명이 실제 존재 하지 않는 경우 파일을 생성.

vi 커서 이동

커서설명
h (←)왼쪽으로 커서 이동
j (↓)아래로 커서 이동
k (↑)위로 커서 이동
l (→)오른쪽으로 커서 이동
w오른쪽 한 단어의 끝 부분으로 커서 이동
e오른쪽 한 단어의 앞 부분으로 커서 이동
b왼쪽 한 단어의 앞 부분으로 커서 이동
Enter한 행 아래로 커서 이동
Back space한 문자 왼쪽으로 커서 이동
Space Bar한 문자 오른쪽으로 커서 이동
^행의 맨 왼쪽으로 커서 이동
$행의 맨 오른쪽으로 커서 이동
H화면의 맨 위로 이동
M화면의 중간으로 이동
L화면의 맨 아래로 이동
숫자G‘숫자’ 만큼 지정한 줄로 커서 이동
Ctrl + i한 화면 위로 이동
Ctrl + b한 화면 아래로 이동
Ctrl + d반 화면 위로 이동
Ctrl + u반 화면 아래로 이동
Ctrl + e한 줄씩 위로 이동
Ctrl + y한 줄씩 아래로 이동

문자, 행 , 삽입 명령어

커서설명
a커서 오른쪽에 문자 삽입
A커서 오른쪽, 행의 끝에 문자 삽입
i커서 왼쪽에 문자 삽입
I커서 왼쪽, 행의 처음에 문자 삽입
o커서 아래에 행 삽입
O커서 위에 행 삽입
ESC종료

텍스트 변경 명령어

명령어설명
cw단어 변경
cc행 변경
C커서 오른쪽의 행 변경
s커서가 위치한 문자열 대체
S커서가 위치한 라인의 문자열 대체
r커서 위치 문자를 다른 문자로 대체
r-Enter행 분리
J현재 행과 아래 행 결합
xp커서 위치 문자와 오른쪽 문자 교환
~문자형(대, 소문자) 변경
u이전 명령 취소
U행 변경 사항 취소, 이전의 최종 행 취소
.이전 최종 명령 반복

텍스트 삭제 명령어

명령어설명
x커서가 있는 문자 삭제
nx커서가 있는 위치부터 n개의 문자를 삭제
dw현재 커서에 있는 한 단어 삭제
dd커서가 있는 라인 삭제
ndd커서가 있는 라인부터 n개의 라인 삭제
db커서의 위치에서 거꾸로 한 단어 삭제
D커서 오른쪽 행 삭제
:5,10d5~10번째 행 삭제

복사 및 이동 명령어

명령어설명
yy커서가 위치한 줄 복사
Y행 yank 또는 복사
yh커서의 왼쪽 문자 복사
yl커서에 위치한 문자 복사
yi커서가 위치한 줄과 그 아랫줄 복사
yk커서가 위치한 줄과 그 윗줄 복사
Pyank 되거나 삭제된 행 현재 행 위로 삽입
pyank 되거나 삭제된 행 현재 행 아래에 삽입
:1,2 co 31~2행을 3행 다음으로 복사
:4,5 m 64~5행을 6행 위로 이동
  • yank : 홱 잡아당기다

한줄복사

  • 해당 라인에서 ‘yy’, 즉 y를 두번 누르면 캐시에 저장이 된다.
  • 붙여넣기를 원하는 곳으로 이동하여 ‘p’를 누르면 커서 다음 라인에 붙여넣기가 된다.

블럭복사

  • v키를 누른 후 커서를 이동하여 블력을 설정한다.
  • putty의 경우 블럭이 설정되는 모습이 보이나, ssh의 경우 블럭 모습이 나타나지 않으나 실제로는 설정되고 있다.
  • 원하는 부분을 블럭으로 설정한 뒤(설정 완료키는 없다) ‘y’키를 누르면 캐시에 복사가 된다.
  • 같은 방법으로 원하는 곳으로 이동하여 ‘p’를 누르면 커서 다음 라인에 붙여넣기가 된다.

행 번호 설정 명령어

명령어설명
:set nu 또는 :set number에디터의 각 행의 좌측에 행 번호 표시
:set nonu에디터의 각 행의 좌측 행 번호 숨기기

행 찾기 명령어

명령어설명
G파일의 마지막 행으로 가기
21G파일의 21번째 행으로 가기
Ctrl + G현재 File name과 커서의 라인 정보

탐색 및 대체 명령어

명령어설명
/{검색할 문자열}오른쪽 아래 방향으로 문자열 검색
?{검색할 문자열}왼쪽 위 방향으로 문자열 검색
n문자열의 다음으로 계속 검색
N문자열의 이전으로 계속 검색
:g/search-string/s/각 발생 탐색 후 확인하고 대체
:s/string/rep현재 행의 str을 rep로 대체
:1,.s/string/rep/1부터 현재 행의 str을 rep로 대체
:%s/string/rep/g파일 전체 str을 rep로 전부대체
:.$/aaa/bbb커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체

화면 정리 명령어

명령어설명
Ctrl + l불필요한 화면정리 후 다시 표시

파일 명령어

명령어설명예제
:r {파일명}커서 다음에 파일 삽입:r test.txt
:{행번호} r {파일명}입력한 파일을 입력한 행번호 다음에 삽입:10 r test.txt

보관 및 종료 명령어

명령어설명
:w변경사항 저장
:w {파일명}변경사항 입력한 파일명으로 저장
:wq변경사항 보관 후 vi 종료. ZZ 명령과 같음. :w(기록)과 :q(종료) 를 연속적으로 수행
ZZ변경사항 보관 후 vi 종료. 임시 버퍼의 내용을 vi로 호출할때 사용되었던 파일에 기록한 후 vi를 빠져나옴
:q!변경사항 보관하지 않고 종료
q수정한 파일을 저장하지 않고 vi 종료
e!수정한 것을 무시하고 다시 편집상태로

기타

문자설명
.현재 line
%전체 line
$파일 맨끝 line
1,$%
2,32 ~ 3 line
This post is licensed under CC BY 4.0 by the author.