linux

centos8 vi 편집기

sysman 2020. 12. 2. 11:04

VI 편집기가 동작하는 원리를 보면 다음과 같이 버퍼에서 작업을 하게 된다. 그러므로 저장을 시키는 명령어를 입력하지 않는 이상 디스크상에 파일의 내용이 저장되는 것은 아니다. (.swp 파일 제외)

 

명령어 형식 설명

$ vi

새 파일을 편집할 수 있는 화면이 나온다. 여기서 작업을 한후에는 반드시 파일이름을 지정하여 저장하여 주어야 한다. 예) : w filename (최하위행 모드)   //다른이름으로 저장

$ vi filename filename

이름을 가진 파일이 존재하는 경우 해당 파일을 편집하고 filename 이름을 가진 파일이 존재하지 않는 경우 새 파일을 편집할 수 있는 화면 상태가 된다.

$ vi -R filename

Readonly, 파일을 Readonly 상태로 열어준다. 중요한 파일, 여러 사람이 동시에 수정가능한 파일을 다룰때 편리하게 사용 될수 있다.view 명령어와 동일한 기능을 수행할 수 있다.

$ view filename

$ vi -r filename

Recovery, 이전 vi 편집 작업 중 비정상적으로 작업이 끝난 경우 편집하던 파일 복구시에 사용된다. 이 경우 사용자의 메일로 복구할 파일에 대한 정보가 오게 된다.

$ vi -L

이전 vi 편집 작업 중 비정상적으로 작업이 끝난 경우 복구할 파일들에 대한 전체적인 목록을 볼수 있다.

$ vi +38 filename

$ vi -c 38 filename

$ vi +/"school" filename

편집작업에 들어갈 때 특별한 명령어를 수행하면서 시작하는 경우 사용한다.

예) vi +38 filename(38번째 라인부터 시작)

vi -c 38 filename(위와 같은 의미)

vi +/"school" filename (school 단어가 있는 라인부터 시작)

 

 

vi 편집기 실행시 기본 모드는 명령행 모드이다. 명령행 모드에서 입력을 하기 위해서는 입력행 모드로 전환해야 한다. 이런 경우 다음과 같은 문자를 통해 입력 모드로 전환할 수 있다.

• a, A, i, I, o, O

Insert - i : 현재 커서 위치로부터 입력한다. - I : 현재 커서가 있는 행의 처음부터 입력한다.

Append - a : 현재 커서 위치 이후부터 입력한다. - A : 현재 커서가 있는 행의 마지막부터 입력한다.

Open Line - o : 현재 커서가 있는 아래행부터 입력한다. - O : 현재 커서가 있는 위행부터 입력한다.

 

(1). move h, j, k, l ← ↓ ↑ →

(2). delete x, dd

(3). input i

(4). save & quit shift + : : w! : wq /* w: write, q: quit */ : q! : wq!

(5): set number (: set nu) 파일의 LINE번호를 붙여 표시해준다

: set nonumber (: set nonu)

: 30 (30G) nG특정 LINE으로 이동한다

/ftp -> n -> N

 

 

이동

■ 좌우 이동 : (h, l), (w, b), (0(^), $)

■ 상하 이동 : (j, k), (<CTRL + F>, <CTRL + B>), (H, L), (G, nG, 1G) [참고] :5 (=5G), :10 (=10G), 5, 10

h: 한 문자 왼쪽으로 이동(←)

l: 한 문자 오른쪽으로 이동(→)

 

w: 한 단어 오른쪽으로 이동

b: 한 단어 왼쪽으로 이동

 

0(^): 라인의 처음 문자(라인의 처음)으로 이동

$: 라인의 마지막으로 이동

 

j: 한 문자 아래로 이동(↓), 다음 라인으로 이동

k: 한 문자 위로 이동(↑), 이전 라인으로 이동

 

<CTRL + F>: 다음 페이지로 이동

<CTRL + B>: 이전 페이지로 이동

 

H : 현재 페이지의 가장 첫번째 줄로 이동

L : 현재 페이지의 가장 마지막 줄로 이동

 

1G: 문서의 첫 번째 라인으로 이동 ( gg )

G: 문서의 마지막 라인으로 이동

 

삭제

■ 좌우 삭제: x, dw, (d0, d$), dd

■ 상하 삭제: dd, 3dd, (:1,3d), (dG, d1G) [참고] dd(=D), 3dd(=3D)

x: 현재 커서 한 글자 삭제

dw: 현재 커서 앞의 한 단어 삭제

db : 현재 커서 뒤로 한 단어 삭제

d0/d^: 현재 커서부터 라인의 처음까지 삭제

d$: 현재 커서부터 라인의 마지막까지 삭제

dd: 현재 라인 삭제

3dd: 현재 커서 라인을 포함해서 아래로 3개 라인 삭제

:1,3d: 1번째 라인부터 3번째 라인까지 삭제

dG: 현재 커서 라인부터 문서 마지막까지 삭제

d1G: 현재 커서 라인부터 문서 처음까지 삭제

 

Undo

■ u, U

u: 바로 이전에 상태로 되돌림

U: 라인전체에 대해 이전 상태로 되돌림

 

Join Line

■ J J: 현재라인에 아래 라인 붙이기

 

Replace

■ r, R r: 현재 글자를 대치 R: <ESC>키를 누르기 전까지 연속으로 현재 글자 대치

 

Copy/Paste

■ yy(=Y), 3yy(3Y), p or P ■ :1,3 co 5 ■ :1,3 m 5 yy: 현재 라인 복사(Yank) 3yy: 현재 커서 라인 포함해서 하위의 3개의 라인 복사 :1,3 co 5: 첫 번째 라인부터 3번째 라인까지 복사하여 5번째 라인 아래에 붙이기 :1,3 m 5: 첫 번째 라인부터 3번째 라인까지 5번째 라인 아래에 이동하기 p : 현재 커서 아래에 붙이기 P: 현재 커서 위에 붙이기

 

검색

■ /New,n or N ■ ?Newn or N /New: 현재 커서 라인부터 찾으려는 문자열(예: New) 검색 ?New: 문서의 마지막 라인부터 찾을려는 문자열(예: New) 검색 n: n(Next), 정방향다음번째 검색 N: N(Next), 역방향으로 다음번째 검색 / 정방향 검색 ? 역방향 검색

 

치환

:%s/ [검색문자열]/[치환문자열]/g

:%s/hello/HELLO/g

:5,10s/&/ /

:5,10s/^ //

특수문자 사용시 \(역슬래시)기호를 앞에 삽입

 

검색/바꾸기

■ :%s/<찾을문자열>/<바꿀문자열>/g ■ :5,10s/Old/New/g

 

EX) :%s/hello/HELLO/g

1,$ => :5,10s/HELLO/hello/g

search(substitution)

globally => %s/hello/HELLO/ , %s/hello/HELLO/g

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

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

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

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

:%s/hello/HELLO/g: 문서 전체에서 hello를 검색해서 HELLO로 변환

:1,$s/hello/HELLO/g: 문서 전체에서 hello를 검색해서 HELLO로 변환

:5,10s/^/#/: 5번째 라인부터 10번째까지 라인의 처음부분에 ‘#’처리

■ 특수문자를 변경하는 방법

특수문자는 문자 앞에 역슬래쉬 기호를 추가해야 한다

/를 $ 로 변경

:%s/\//\$/g

 

저장/나가기

■ :w/* w(write), 현재 파일에 저장 하기 */

■ :w filename/* 다른 이름으로 저장 하기 */

■ :w!(root use) /* 현재 파일에 강제적으로 저장 하기 */

■ :w! file /* 현재까지의 변경사항을 file로 저장 */

■ :3,10w file /* 3번째 라인부터 10번째 라인까지 file로 저장 */

■ :q /* q(quit), 편집기 종료 */

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

■ :wq/* 저장하고 편집기 종료 */

■ :wq!(root Use)/* 현재 파일에 강제적으로 저장하고 편집기 종료 */

■ :r file /* file의 내용을 현재 커서 위치에서 읽어 들임 */

■ :!CMD /* vi 편집기를 빠져나가지 않은 상태에서 쉘 명령어를 수행 */

 

vi 편집기 환경설정

:set all //모두보기

: set tabstop=10/* 탭간격 조정 */

: set nu/* 라인 번호 달기 */

: set noshowmode/* 상태표시행에 모드를 표시하거나 표시하지 않거나를 설정 */

: set directory=/tmp /* 지정된 기능 변경 */

 

vim 환경설정

■ 사용자 정의 $HOME/.vimrc 파일 생성

# vi ~/.vimrc (# vi ~/.exrc)

set number

# vi /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

4 adm:x:3:4:adm:/var/adm:/sbin/nologin

■ $HOME/.vimrc 파일의 샘플 파일 생성

# cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc

■ VIM 편집기 참고 파일(VIM 편집기 사용법 문서)

# vi /usr/share/vim/vim70/tutor/tutor.ko.ufs-8

■ VIM 편집기의 Plugin 모음들

http://saelly.tistory.com/296

http://ethanschoonover.com/solarized

 

Plug-in 모음

vim Color Scheme Site http://vimcolorschemetest.googlecode.com/svn/html/index-html.html http://ethanschoonover.com/solarized vim 사용자를 위한 플러그인 매니저 vundle 설정 Tip http://kldp.org/node/12..

saelly.tistory.com

 

'linux' 카테고리의 다른 글

centos NAT 설정  (0) 2020.12.13
linux - 기본II  (0) 2020.12.07
linux - 기본 I  (0) 2020.12.01
Centos - telnet 접속  (0) 2020.11.30
centos - ssh에서 root접속 제한  (0) 2020.11.25