Vi 편집기

SunChan Kwon·2024년 5월 22일
0

Linux

목록 보기
2/20

기본적으로 제공되는 vi편집기는 파일에 데이터를 입력하는 등 편집에 사용된다. vi편집기는 다양한 편집 기능과 명령을 제공하며, 강력한 검색 및 치환기능, 자동 들여쓰기, 줄번호 표시 등의 사용자 정의기능을 갖추고 있다. 초기에는 사용하기 다소 어렵지만 익숙해지면 높은 생산성을 제공하는 강 력한 편집기다.

vi편집기의 3가지 편집모드

  • 직접 명령모드 : ‘vi 파일명‘ 명령으로 편집기 접근 시 초기 화면으로 이때 입력되는 모든 문자는 명령으로 해석된다.

a : 현재 커서 위치 다음부터 새로운 문자를 입력
i : 현재 커서 위치 dkvdp 새로운 문자를 입력
o : 현재 커서 위치 다음라인에 새 라인 추가하고 문자를 입력
O : 현재 커서 위치 위 라인에 새 라인 추가하고 문자를 입력
x : 현재 커서 위치 문자 삭제
dd : 현재 커서 위치 라인 삭제
a, i, o, O : 입력 시 데이터 입력모드 진입

  • 데이터 명령모드 : 직접 명령모드에서 a, i, o, O 입력하여 진입
    데이터 명령모드에서 입력되는 문자는 작업 버퍼에 저장되고 디스크에 저장을 위해 ESC키를 쳐 직접 명령모드로 나간 후 :w!명령으로 저장
  • 간접 명령모드 : 직접 명령모드에서 콜론(:)입력하여 마지막줄에 콜론이 찍히며 진입.

    w! : 저장
    q! : 종료
    wq! : 기존 존재파일 점검없이 쓰고나옴(입력한 작업버퍼내용 파일로 저장)

vi편집명령

텍스트 입력(입력모드 전환)

	i : 현재커서 앞에 문자입력, I : 현재 줄의 앞에 문자입력
	a : 현재커서 뒤에 문자입력, A : 현재 줄의 끝에 문자입력
	o : 현재 줄의 아래에 입력. O : 현재 줄의 위에 입력

커서 이동

  • 글자 단위
    h : 한 칸 왼쪽
    j : 한 줄 아래
    k : 한 줄 위
    l : 한 칸 오른쪽

  • 단어 단위
    b : 이전 단어의 첫 문자로 이동
    w : 다음 단어의 첫 문자로 이동
    e : 단어의 끝으로 이동, 커서 위치가 단어의 끄,x이라면 다음 단어의 끝으로 이동

  • 텍스트 삭제(직접 명령모드)
    x : 커서 위치 한 개의 문자 삭제
    X : 커서 위치 앞의 한 문자 삭제
    d0 : 커서위치 라인의 선두까지 문자 삭제
    d$, D : 커서 위치 라인의 마지막까지 모든 문자 삭제
    dw : 커서 위치 한 단어 삭제
    dd : 커서 위치 한 라인 삭제
    D : 커서 위치 줄의 끝까지 삭제

문자열 검색

	순방향 : /문자열/, /문자열
	역방향 : ?문자열?, ?문자열

복사, 붙이기, 이동

범주명령어설명
복사yw한 단어 복사하기
nyw여러 단어 복사하기
yy, Y한 줄 복사하기
nyy, nY여러 줄 복사하기
----------------------------------------------------
붙이기p커서 우측/아래 줄에 붙이기

텍스트 바꾸기

범주명령어설명
문자r커서 위치한 곳 문자 한 개를 다른 한 개의 문자로 변경
문자R커서 위치한 곳부터 문자를 입력하면 덮어 씌워지며 ESC 키로 해제
단어cw커서가 위치한 한 단어를 다른 단어로 바꾸는 명령
한 줄 내용c현재 커서 위치한 왼쪽 텍스트는 바꾸지 않고 오른쪽으로만 변경

파일 편집 기타 기능들

명령어설명
:r현재 파일의 커서 위치 다음에 다른 파일의 내용 삽입
:!파일 편집 중 vi 상태에서 Linux 명령어 실행
:sh잠시 쉘 상태로 들어가는 명령, exit에 의해 다시 vi 상태로 돌아감

vi환경옵션

vi에디터의 여백, 라인번호, 화면크기, 들여쓰기 등의 사전 설정은 .vimrc에서 옵션을 수정하여 저장 할 수 있다.

옵션의 종류

옵션(약어)기능
set autoindent (set ai)자동으로 들여쓰기를 한다.
set cindentC 프로그램에서 자동으로 들여쓰기를 한다.
set smartindent향상된 자동 들여쓰기
set autowrite (set aw)다른 파일로 이동하는 명령 실행 전에 현재 파일 강제 저장
set backspace1로 설정 시 백스페이스로 문자 삭제 제한, 2로 설정 시 가능하게 지정
set backspace=indent, eol, smart줄 끝, 시작, 들여쓰기에서 백스페이스 사용 시 이전 줄과 연결
set backupext=.bak백업 파일 확장자 지정
set encoding=cp949확장완성형 한글 인코딩 cp949 사용
set history=명령어 기록 기억 개수 지정, :후 화살표 키 누르면 이전 명령 보여줌
set hlsearch문자열 검색할 때 하이라이트

0개의 댓글