본문 바로가기
모의해킹 침해대응 과정/Linux 기초

리눅스 기초때기 3일차. / VI 편집기

by 알거음슴 2021. 4. 1.

vi 편집기 / vim 편집기

많은 사람들이 애용하는 TUI 환경의 편집기. 

vi = /bin/vi

vim = /usr/bin/vim

 

이하 문서에서는 당연히 많이 쓰고 자동 지원되는 vi 편집기를 중점으로 다뤄보겟다.

 

1. vi 편집기 실행방법

 1) vi : 새 파일을 편집할 수 있는 화면이 나온다.

 2) vi [filename] : 파일이름이 지정된 파일이 있을경우 해당 파일을 편집하고, 없을 경우 새파일을 해당이름으로 편집할 수 있는 화면 상태가 된다.

 3) vi -r [filename] : Recovery, 이전 작업중 비정상적으로 작업이 끝난경우 편집중인 파일을 복구할때 사용하게 된다.

 4) vi -L : 복구할수 있는 파일의 리스트를 확인할 수 있다.

 5) vi [OPTIONS] [filename] : 특정 옵션을 부여하여 파일을 편집할 수 있다 ex) +38 은 38번째 줄 부터 편집기 실행.

* /usr/share/vim/vim80/tutor 안에는 vi의 기본적인 매뉴얼을 확인 할 수 있다. vimtutor 로도 열어볼 수 있으나 기본 설정 언어에 따라 번역내용이 다르다.

 

2. 편집기의 기능

 기본기능 : 이동, 삭제, 입력, 저장&종료

 

3. vi 편집기의 모드

 1) Command Mode : 명령모드

조작모드 진입방법 : 최초 vi 편집기 실행시 , 다른모드에서는 ESC키 입력후 가능.

 

상하좌우 이동방법 : 방향키 또는 별도 커맨드 입력.

 j : 아래로  /  k : 위로  /  h : 좌(왼쪽)으로  /  l : 우(오른쪽)으로

* 추가적인 이동방법

w : 단어 단위로 앞으로 이동 / b : 단어 단위로 뒤로 이동

^ : 라인의 처음으로 이동 / $ : 라인의 끝으로 이동

Ctrl+F : 다음페이지로 이동 / Ctrl+B : 이전 페이지로 이동

G : 문서의 마지막줄로 이동 ex) 1G : 1번줄 마지막위치로 / 30G : 30번줄 마지막위치로

 

조작모드 내 편집방법 : 

x : 커서에 위치한 글자 삭제  /  dw : 커서에 위치한 단어 삭제

d0 : 현재 커서 기준 왼쪽라인 전체삭제 / d$ : 현재 커서 기준 오른쪽라인 전체 삭제

dd : 커서 기준의 행 전체 삭제  /  (n)dd : 커서 기준의 n숫자만큼의 줄 삭제 

dG : 현재 커서 기준 하위 모든 내용 삭제 

d(n)G : 커서기준 (n) 수 만큼 위로 줄 삭제 ex) d1G = 커서기준 문서 첫번째 줄까지 모두 삭제

u : 바로 이전 상태로 되돌림  /  ctrl+R : 실행취소를 다시 되돌리기 (다시실행)

r : 한글자를 수정할 수 있음 (이동 -> x(삭제) -> i(입력모드) -> 수정입력 을 한번에 할수 있음) 

 

 

 

 2) Input(insert) Mode : 입력모드 

입력모드 진입방법 : i, a, o ..등등 을 입력해야 입력모드로 전환됨.

 i , I : 현재 커서 위치로부터 입력 / 현재 커서가 있는 행의 처음부터 입력

 a, A : 현재 커서 위치 이후 입력 / 현재 커서가 있는 행의 마지막부분부터 입력

 o, O : 현재 커서 위치 있는 아래행부터 입력 / 현재 커서 위치 있는 위행부터 입력

 

 

 

 3) Last line Mode : 최하위행

최종모드 진입방법 : shift+; 즉 : or / or ?

 

최하위행 내  저장 & 종료 방법 :

w : 저장하기  /  w! : 강제적 저장하기 (root)  /  w [filename] : [filename]으로 저장하기.

q : 종료하기  /  q! : 저장 안하고 편집기 종료

* wq / wq! 등으로 조합하여 많이 사용함

![CMD] : vi 편집기를 빠져나가지 않고 쉘 명령어를 수행하기

[참고] 저장하고 빠져나가기의 여러방법

:x  /  :wq  /  ZZ 등의 방법 도 있다.

 

최하위행 내 편집방법 : 

: set nu : 라인번호 표시하기

: set nonu : 라인번호 지우기 

: 30 (30G) : 특정 줄로 이동하기 (지금은 30번째줄)

: n, nd : n ~ n 까지의 줄 내용 삭제

/[word] : 특정 단어 검색 이후 n 은 아래로 검색 N은 위로 검색 

?[word] : 특정 단어 검색 이후 N은 아래로 검색 n은 위로 검색

yy(=Y) : 한 줄 전체 복사 , 3yy : 커서기준 아래 3줄 복사 

p : 커서기준 아래줄에 붙여넣기,  P : 커서기준 윗줄에 붙여넣기

* 1, 3 co 5 : 1번째 라인부터 3번째 라인까지 5번째 라인 아래에 복사해서 붙여넣어라

* 1, 3 m 5 : 1번째 라인부터 3번쨰 라인까지 5번째 라인 아래로 이동해라 ( 잘라내고 붙여넣는 개념 )

:s%/[findword]/[changeword]/g : 단어를 찾아서 치환

:[1,3]s%/[findword]/[changeword]/g : 1번째 라인부터 3번째 라인 사이의 단어를 찾아서 치환

 * CMD 끝에 g가 있는데 g가 있을경우 범위내 전체 문서 g가 없을경우 줄 기준으로 첫 단어만 치환됨

 

[참고] last line mode 의 응용방법 4가지

 1) :5,10s/^/#/ /* 주석처리 */

 2) :5,10s/^#// /* 주석해제 */

 3) :5,10s/^/ / (4 blank character) /* 들여쓰기 */

 4) :5,10s/^ // /* 내어쓰기 */

 

4. vi 편집기의 환경파일

기 설정되어있는 여러가지 기능들이 내장되어있다, 해당 내용들은 set이라는 환경파일내에 저장되어있다 : set all 로 set 환경파일 접속하여 설정내용을 끄고 키거나, 지정값을 변경하며 이용가능하다.

 

* ~/.vimrc 의 환경설정 파일을 별도로 만들어 내가 원하는값만 넣어서 적용도 가능하다.

-> 주로 이용되는방식 

 

 1) 주로 설정하는 set 내 설정값내용

: set tabstop=4  : 탭간격 조정  ( 약어 : set ts=4 )

: set number     : 라인 번호 달기 (  약어 : set ni )

: set autoindent : 자동 들여쓰기  (  약어 : set ai )

 

 

 

VI 편집기 ... 언젠가는 적응되겠지 ..