INFRA/Linux

vi 편집기

sshhhh 2024. 6. 27. 23:16

== vi 편집기 ==

  • 리눅스 대표 문서 편집기
  • H,J,K,L 로 방향키 이동
  • :set number se nu : vi 편집기 진입시 행넘버 주기

 

vi 편집기 3가지 모드

 

  1. 명령모드
    • 기본모드이며, 검색, 커서 이동, 복사/붙여넣기 등의 편집 수행
  2. 입력모드
    • 문서의 텍스트를 입력, 수정, 삭제할 수 있는 모드
    • 내용 작성 시 사용
  3. 실행(ex)모드
    • vi 편집기를 제어하는 명령어를 실행
    • 치환, 저장 시 사용

 

모드 이동

  • 명령모드 --> 입력모드
    • i, a, o, s, r
  • 명령모드 --> 실행모드
    • : --> 명령어 실행모드
    • / --> 검색모드(아래로)
    • ? --> 검색모드(위로)

 

입력모드 명령어

  • 내용 입력
    • i --> 현재 커서 왼쪽부터 입력
    • a --> 현재 커서 오른쪽부터 입력
    • o --> 현재 커서 아래부터 입력(단, 새롭게 빈 행을 추가하면서 입력 됨)
  • 내용 수정
    • r --> 현 커서 위치의 문자 변경
    • R --> 현 커서부터 입력되지만 기존 내용을 덮어씌우면서 입력 됨

 

 

명령 모드 명령어

  • 0 , ^ : 선택된 라인 맨 앞으로 이동
  • $ : 선택된 라인 맨 뒤로 이동
  • [[ : 문서 맨앞
  • ]] :문서 맨뒤
  • yy : 복사
  • dd : 잘라내기 3dd → 3행 삭제
  • p :붙여넣기
  • x : 한문자 삭제
  • R : 문자열 바꿔짐
  • r : 한글자만 바꿔짐
  • u : 되돌리기
  • crtl + r : 되돌리기 취소

 

실행모드 명령어

  • w 저장, q 종료, ! 강제
  • wq! --> 저장하고 종료
  • q! --> 저장하지 않고 종료
  • :set number(:se nu) --> 행번호 추가
  • / -->전체문자열 검색후
  • n --> 페이지 넘기면서 다음 문자열 검색
  • :20 --> line 20으로 이동 (명령모드에서 20치면 20줄 앞으로 이동)
  • :%s /문자열1/문자열2 /g (찾아 바꾸기, 문자열1을 찾아 문자열2로 변경해라)

vi 편집기 실습 문제

1. # cp /root/anaconda-ks.cfg /test로 복사 후 vi로 /test/anaconda-ks.cfg 파일 열기
     # cd /test
     # cp /root/anaconda-ks.cfg .
     # vi anaconda-ks.cfg
2. 프롬프트를 20번 라인으로 이동
     :20
3. 20번 라인부터 5라인을 복사한 후 문서의 제일 마지막 라인에 붙여넣기
     5yy / G / p
4. 현재 문서에서 라인 번호를 표시
     :se nu
5. 30번 라인으로 이동
     :30
6. 수정모드로 edit 문자열 입력
     R / edit
7. 6번에서 작업했던 내용 취소
     ESC(명령모드 전환) / u
8. 8번 라인으로 이동
     :8
9. 현재프롬프트를 기준으로 오른쪽으로 3개의 문자 삭제
     3x 
10. 현재 프롬프트를 기준으로 위쪽으로 Generated 문자열 검색
     ? Generated
11. 현재문서에서 Generated로 되어있는 모든 문자열을 made로 변경
     :%s/Generated/made/g
12. 문서의 마지막으로 이동
     G
13. /etc/passwd 파일의 내용을 현재 문서로 불러들이기
     :r!cat /etc/passwd
14. 30번 라인부터 5라인을 잘라내서 35번 라인 밑으로 붙여넣기
     :30 / 5dd / :35 / p
15. 저장하고 종료
     :wq!