vi 에디터

조준형·2022년 12월 29일
0

Linux

목록 보기
6/7

vi 에디터의 동작모드

명령 모드

  • 프로그램 시작시 기본 모드
  • 커서 이동, 복사 및 다른 모드로 전환할 수 있는 모드

명령행 모드

  • 문자열 검색, 치환, 저장, 종료 등의 명령을 수행할 수 있는 모드

입력 모드

  • 키보드 입력이 파일의 텍스트로 입력되는 모드

비주얼 모드

  • 문자, 라인, 블록 단위로 텍스트를 선택하는 모드

프로그램 구동

  • vi [options][new or existing file name]

옵션

  • -R: 읽기 전용
  • -r: 파일 복구 후 편집
  • ex) vi -r hello.c

정규식

특정한 패턴의 문자열 집합을 나타내는 식

  • 쉘, vi, grep, find, sed을 포함한 다양한 리눅스 프로그램들에서 문자열 패턴을 검색하기 위해 사용됨
  • 리눅스에서는 3가지 형식이 존재
    • BRE: Basic Regular Expression (default)
    • ERE: Extended Regular Expression
    • PRCE: Perl Regular Expressions

grep 명령을 사용한 패턴 검색

grep 명령은 파일에서 정규식으로 표현된 패턴에 해당하는 라인을 출력한다

  • 형식
    • $grep [OPTIONS] PATTERN [FILE…]
      • 파일이 주어지지 않으면 stdin에서 입력, -r의 경우에는 재귀적으로 디렉토리를 찾아가며 실행
  • 유사명령
    • egrep은 ‘grep -E’와 동일하며 ERE를 사용함
      • 일반적으로 ERE가 BRE보다 더 많은 기능을 제공하지만 GNU 프로그램들은 BRE와 ERE의 표기형식에 차이가 있을 뿐 기능의 수준은 동일하다
    • fgrep은 ‘grep -F’와 동일하며 패턴을 정규식으로 해석하지 않음
    • rgrep은 ‘greo -r’과 동일하며 재귀적으로 디렉토리들을 탐색
    • $grep u names.txt: names.txt에서 문자를 포함한 행을출력
    • $grep -E ‘o*’ list.txt: list.txt 파일에서 문자 ‘o’를 0개 이상 포함한 행을 출력

문자열 치환

rename 명령과 sed에서의 문자열 치환, vi도 유사함

  • ‘s/{pattern}/{string}/[flags]
    • {pattern}을 찾아서 {string}으로 대치함
    • flag
      • i: 대소문자를 가리지 않음
      • g: {pattern}이 나타날 때마다 치환을 수행, g가 생략된 경우 1번만 수행함
    • rename ‘s/./-/’ *. # s는 substitute

vi에서 사용

  • 문자열 패턴 검색
    • /{pattern}: 전방향 검색
    • ?{pattern}: 역방향 검색
    • n: 다음 매치된 곳으로 이동
    • /^{pattern}: 텍스트 라인 시작위치에서 패턴 검색
    • /{pattern}$: 텍스트 라인의 끝에서 패턴 검색
  • 문자열의 치환
    • {range}s/{pattern}/{string}/{flags}
    • {range}: 범위 %(모든 라인), k,l(k에서 l라인, $는 마지막 라인), 없으면 현재 라인에서만 치환
    • {pattern}: 검색 패턴
    • {string}: 문자열
    • {flags}: 옵션
      • g(동일한 라인에서 패턴이 발견될 떄마다 치환, 디폴트는 맨 앞의 것만 치환됨
      • i 대소문자 구분하지 않고 치환
    • 1,$s/o/O/g
profile
코린이

0개의 댓글