본문 바로가기

linux

vi 편집기[vi, view, vi -r, vi 커서이동,vi 명령어, 디버깅 -x]

728x90
반응형

 vi 편집기

 

vi 편집기란?  리눅스 안에서 사용할 있는 문서 편집기

vi(Visual Editor) 뜻에서 유래가

 

vi 편집기 명령모드 3가지

1. command 모드(esc눌렀을 화면)

vi 기본모드이며 vi 실행하면 바로 보이는 화면

방향키로 왔다갔다 있는 화면

k , j 누르면 위아래 움직인다.

l 누르면 옆으로 움직인다.

 

2. Edit 모드

a, i, o 등을 누르면서 내용을 입력 또는 삭제하는 명령모드

 

 

3. last line 모드

입력모드에서 저장안하고 나가는거:

쉬프트+콜론 -> q! 엔터

 

입력모드에서 저장하고 나가는거:

:wq! 저장하고 종료(쉬프트+zz)

****대문자 ZZ 쓰면 된다.(그래서 쉬프트씀)

 

:q!  저장안하고 종료(쉬프트+zq)

****대문자 ZQ 쓰면 된다.

 

 

편집기를 시작하는 명령어

1. $ VI 파일명    : 읽기, 쓰기가 가능한 상태로 파일이 열린다.

2. $ view 파일명:   읽기만 가능한 상태로 파일이 열린다.

3. $ vi -r 파일명 :  손상된 파일을 복구하는 명령어

 

vi 편집기를 정상적으로 안열리고

이상한 경고 메시지들이 나오면서 열릴 해결방법?

swap 파일을 삭제한다.

:

$ rm .emp.txt.swp

*** 앞에 . 찍힌건 숨김파일.  

 

**내가 쉬프트zz 안끄고, 컨트롤zz 종료시키면(즉 비정상 종료)

   이런 이상현상이 발생한다

 

 

vi 편집기 내에서 커서 이동

 

$vi wintert.txt

 

1. j :   아래로 이동

2. k:   위로 이동

3. h :  왼쪽으로 이동

4. l  : 오른쪽으로 이동

5. 1G : 위로 이동

6. G: 아래로 이동 (또는 소문자 gg 한솔이)

7.   :set nu : 파일내의 텍스트에 번호표시

8.   :set nonu  : 번호 안보이게 하는 방법



vi 편집기의 입력 명령어

1.    i   : 커서의 왼쪽부터 입력하겠다.

2.   a   : 커서의 오른쪽부터 입력하겠다.

3.   o   : 커서의 다음라인부터 입력하겠다.

4.  O : 커서의 윗라인부터 입력하겠다.

 

 

 

vi 편집기와 삭제 명령어

1.   x   : 철자 하나 삭제

2.   dd: 삭제

3.  dw: 커서에 있는 단어 삭제

4.   :5,10  d  :     5~10번째 삭제

5.  D : 커서 오른쪽 삭제




취소 명령어

u  : 방금 작업한 취소 하겠다.

 

 

복사/붙여넣기 명령어

1.   yy   : 하나의 행을 복사

2.    p       : 붙여넣기

3.    yG    : 현재행부터 파일 끝까지 복사하겠다.

4.   :1,2  co  3   : 1~2행을 3 다음으로 복사

5.    :1,2,   m    3    :  1~2 행을 3 다음으로 이동




vi 편집기

 

1. :/문자   -> 문자검색

:

$ vi winter.txt

:/ELSA

알파벳 n 누르면서 계속 검색(아래로~~)

shift + n 누르면서 다시 뒤로 검색(위로~~)



2. :s/기존문자/변경할문자

"지금 커서가 있는 현재행의 기존문자를 변경할 문자로 변경하겠다"


문제. vi 편집창에서 emp2.txt 의 king 을 yyy 로 변경하시오


커서 갖다놓고 명령모드에서

:s/KING/yyy 실행


7839 yyy                 PRESIDENT                   0 81/11/17       5000          0         10






3. 

  :%S/기존문자/변경할 문자/g

"문서 전체의 기존문자를 변경할 문자로 변경하겠다"

**g 글로벌의 약자 (그래서 커서,로우 상관없이 행에 효과를 미침)






 vi 를 이용해서 파이썬 코드 만들기

$ vi p123.py

 

a=1

b=a

print(a+b)

 

[orcl:~]$ vi p123.py

[orcl:~]$ python p123.py

2




문제. 구구단 2단을 수행하는 파이썬 코드를 작성하고 아래와 같이 

      리눅스 에서 실행하면 결과가 출력되게 하시오


$python p_2_dan.py

 

2x1=2

2x2=4

   :

   :

2x9=18

 

[orcl:~]$ vi p_2_dan.py

for i in range(1,10):

        print '2x'+str(i)+'='+str(2*i)

 

또는

for i in range(1,10):

    print'2 x',i,'=',2*i





문제. 아래와 같이 숫자를 물어보게 하고

숫자를 입력하면 세모가 출력되게 하시오

 

$python p_star.py

 

숫자를 입력하세요~ 7


      ★

     ★ ★

    ★ ★ ★

   ★ ★ ★ ★

  ★ ★ ★ ★ ★

 ★ ★ ★ ★ ★ ★

★ ★ ★ ★ ★ ★ ★

 ★ ★ ★ ★ ★ ★

  ★ ★ ★ ★ ★

   ★ ★ ★ ★

    ★ ★ ★

     ★ ★

      ★


$ vi p_star.py

 

#-*- coding: utf-8 -*-

a = int(input('숫자를 입력하세요 ~'))

for i in range(1,a):

    print ((a-i)*' '+i*' ')






리눅스 스크립트 디버깅 모드 실행하는 방법

 

문제. cp_emp.sh를 디버깅 하시오


[orcl:~]$ vi cp_emp.sh

#!/bin/bash


i=1

while [ $i -le 20 ]

do

  cp emp.txt emp$i.txt

  let i=i+1

done




[orcl:~]$ sh -x cp_emp.sh

+ i=1

+ '[' 1 -le 20 ']'

+ cp emp.txt emp1.txt

+ let i=i+1

+ '[' 2 -le 20 ']'

+ cp emp.txt emp2.txt

+ let i=i+1

+ '[' 3 -le 20 ']'

+ cp emp.txt emp3.txt

+ let i=i+1

+ '[' 4 -le 20 ']'

+ cp emp.txt emp4.txt

+ let i=i+1

+ '[' 5 -le 20 ']'

+ cp emp.txt emp5.txt

+ let i=i+1

+ '[' 6 -le 20 ']'

+ cp emp.txt emp6.txt

+ let i=i+1

+ '[' 7 -le 20 ']'

+ cp emp.txt emp7.txt

+ let i=i+1

+ '[' 8 -le 20 ']'

+ cp emp.txt emp8.txt

+ let i=i+1

+ '[' 9 -le 20 ']'

+ cp emp.txt emp9.txt

+ let i=i+1

+ '[' 10 -le 20 ']'

+ cp emp.txt emp10.txt

+ let i=i+1

+ '[' 11 -le 20 ']'

+ cp emp.txt emp11.txt

+ let i=i+1

+ '[' 12 -le 20 ']'

+ cp emp.txt emp12.txt

+ let i=i+1

+ '[' 13 -le 20 ']'

+ cp emp.txt emp13.txt

+ let i=i+1

+ '[' 14 -le 20 ']'

+ cp emp.txt emp14.txt

+ let i=i+1

+ '[' 15 -le 20 ']'

+ cp emp.txt emp15.txt

+ let i=i+1

+ '[' 16 -le 20 ']'

+ cp emp.txt emp16.txt

+ let i=i+1

+ '[' 17 -le 20 ']'

+ cp emp.txt emp17.txt

+ let i=i+1

+ '[' 18 -le 20 ']'

+ cp emp.txt emp18.txt

+ let i=i+1

+ '[' 19 -le 20 ']'

+ cp emp.txt emp19.txt

+ let i=i+1

+ '[' 20 -le 20 ']'

+ cp emp.txt emp20.txt

+ let i=i+1

+ '[' 21 -le 20 ']'






728x90
반응형