리눅스 vi 명령어 정리

2022. 6. 9. 21:07·Programming/Programming
728x90

vi 명령어

리눅스 파일 편집기 - vim (대표적인 문서 편집기)

vi 편집기는명령 모드, 입력 모드, 마지막 행 모드로 총 3가지 모드로 구성되어 있음

구분 명령
입력 모드 i, a, o, O, A
명령 모드  
                       1) 복사 yy
                       2) 붙이기 p
                       3) 삭제 dd
                       4) 저장 ZZ
                       5) 모드전환 i, a, o, Esc
마지막 행 모드 명령모드에서 : (콜론) 을 입력

 

● 명령 모드에서 입력 모드로 전환 (edit 명령)

  •  i : 커서 앞(왼쪽)에 입력
  •   a : 커서 다음(오른쪽)에 입력
  •   o : 커서 아래줄에 입력
  •   O : 커서 윗줄에 입력
  •   A : 라인 마지막부터 입력

 

● 입력 모드에서 명령 모드로 전환 (이동 명령)

  •  ESC

 

● 저장,  종료하기

명령 모드에서 콜론 : 을 이용하여 다양한 작업이 가능하다. (콜론 모드)

  •    :q 종료
  •    :q! 저장하지 않고 강제로 종료
  •    :w 저장
  •    :wq 저장 후 종료
  •    :ZZ 저장 후 종료 ( :wp와 동일)
  •    :wq 파일 이름 : 저장 후 파일 이름 지정
  •    :wq! 저장하고 강제로 종료

   ** vi 에디터에서는 비정상 종료 시 . swp 파일이 생성된다. 필요하지 않은 경우 삭제한다.

 

● 커서 이동

  •  h, j, k, l : 좌,하,상,우 커서 이동 (방향 키가 없는 키보드에서 사용)
  •    w : 다음 단어의 첫 글자로 이동
  •    b : 이전 단어의 첫 글자로 이동
  •    G : 마지막 행으로 가기
  •    :숫자 : 지정한 숫자 행으로 이동 ex) :3

 

● 복사

  •  yw : 커서를 기준으로 뒤에 있는 단어 글자 복사(커서 포함)
  •    yb : 커서를 기준으로 앞에 있는 단어 글자 복사
  •    yy : 커서가 있는 라인(줄) 복사

   ** yw, yb, yy 명령 앞에 복사할 숫자를 지정 가능 ex) 3yw, 5yb, 2yy / 2yy는 2줄 복제

 

● 붙여넣기 (복사, 삭제된 내용을 붙여넣는다.)

  • p : 커서 다음에 붙여넣기
  •    P : 커서 이전에 붙여넣기

  **붙여넣기 작업을 put 작업이라고한다. Vi/Vim에서 붙여 넣기 작업을 수행하려면 커서를 원하는 위치에 놓고 p 는 커서 뒤에 텍스트를 붙여 넣거나 P 는 커서 앞에 붙여 넣는다.

 

● 찾기

  •  /문자열 : 앞에서 부터 문자열을 찾는다. (문자열을 커서 아래 방향으로 검색)
  •    ?문자열 : 뒤에서 부터 문자열을 찾는다. (문자열을 커서 위 방향으로 검색)
  •    n : 뒤로 검색 (원래 방향으로 다음 문자열을 검색)
  •    N : 앞으로 검색 (반대 방향으로 다음 문자열을 검색)

 

● 바꾸기(내용 치환)

문자열을 바꿀때에는 마지막 행모드로 전환을 해야만 사용이 가능

명령어 앞의 : 는 마지막 행모드로 전환하는 명령키

  •  :%s/old/new : 각 행의 처음 나오는 old를 찾아 new로 바꾼다.
  •    :%s/old/new/g : 모든 old를 찾아 new로 바꾼다.
  •    :%s/old/new/gc : 모든 old를 찾아 new로 바꾸기 전에 물어본다.

 

  •    :s/[대상문자열]/[바꿀문자열] : 커서가 위치한 행에서 첫번째로 나오는 대상문자열을 바꿀문자열로 치환
  •    :%s[대상문자열]/[바꿀문자열] : 파일 전체에서 모든 대상문자열을 바꿀문자열로 치환
  •    :[범위]s[대상문자열]/[바꿀문자열] : 범위 내 모든 각 행에서 첫번째로 나오는 대상문자열을 바꿀문자열로 치환
  •    :[범위]s/[대상문자열]/[바꿀문자열]g : 범위 내 모든 행에서 대상문자열을 바꿀문자열로 치환
  •    :[범위]s/[대상문자열]/[바꿀문자열]gc : 범위 내모든 행에서 대상문자열을 바꿀만자열로 치환/수정할지 여부 확인

 

● 되돌리기(Undo), 다시실행(Redo)

  •    u : 이전으로 되돌리기 (Undo)
  •    Ctrl + r : 되될리기한 것을 다시 실행 (Redo)

 

● 자주 사용하는 기능들

  •    :set number : 행번호를 출력 (간단하게 :set nu)
  •    :set nonnumber : 행번호를 숨긴다. (간단하게 :set nonu)
  •    :cd : 현재 디렉토리를 출력

 

● 삭제

  •  x : 커서에 있는 글자 삭제 (한글자)
  •    X : 커서 앞에 있는 글자 삭제
  •    dw : 커서를 기준으로 뒤에 있는 단어 글자 삭제 (커서 포함)
  •    db : 커서를 기준으로 앞에 있는 단어 글자 삭제
  •    dd : 커서가 있는 라인(줄) 삭제

   ** dw, db, dd 명령 앞에 삭제할 숫자를 지정 가능 ex) 4dw, 3db, 2dd / 2dd는 2줄 삭제

   ** 삭제 된 내용은 버퍼에 저장되어 붙여넣기가 가능

 

● 범위 지정

  •    1, $, % : 1행부터 마지막 행까지 범위를 지정
  •    1,. : 1행부터 커서가 있는 행까지 지정
  •    .,$ : 커서가 있는 행부터 마지막 행까지 지정
  •    .,.+2 : 현재 행과 두번째 아랫행까지 지정
  •    10,20 : 10행부터 20행까지 지정

● 기타

  •  s : 현 커서글자를 체인지 → 에디트 모드 진입 → ESC
  •    r : 현 커서 한글자만 체인지
  •    cc : 한줄 전체 체인지 
  •    cw : 워드 체인지
  •    ~ : 대소문자 변환
  •    C : 현 커서부터 라인 끝까지 체인지
  •    :se nu 엔터 → 라인 넘버를 붙여줌
  •    :w filename → 기존파일을 편집하지 않는 경우 저장할 때 항상 파일 이름을 제공할 수 있다. 동일한 명령이 "다른 이름으로 저장" 명령과 같은 역할도 한다.

'Programming > Programming' 카테고리의 다른 글

[JSP] JSP(Java Server Pages)  (0) 2022.07.24
반응형 웹  (0) 2022.07.24
참조자(Reference)  (0) 2022.07.24
동기 통신과 비동기 통신  (0) 2022.07.18
크로스 플랫폼(Cross Platform)  (0) 2022.07.18
'Programming/Programming' 카테고리의 다른 글
  • 반응형 웹
  • 참조자(Reference)
  • 동기 통신과 비동기 통신
  • 크로스 플랫폼(Cross Platform)
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    리액트
    object
    Java
    event
    변수
    Python
    객체
    제어문
    타입스크립트
    자바스크립트
    TypeScript
    HTML
    MySQL
    next.js
    react
    array
    web
    CSS
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
리눅스 vi 명령어 정리
상단으로

티스토리툴바