2021-3-14 유닉스기초(6) Vi 기초

Vi

  • vi는 모드를 기반으로 한다. 명령모드와 삽입모드가 있다.
  • 끝에 ~가 있으면 파일끝에 도달했다는 의미
  • 커서이동
    • h : 왼쪽
    • k : 위로이동
    • j : 아래
    • l : 오른쪽
    • 0 : 행의 맨앞으로 이동
    • $ : 행의 맨끝으로 이동
    • ctrl+u : 화면 반페이지 위로 이동
    • curl+d : 화면 반페이지 아래로 이동
    • ctrl+f : 화면 한페이지 아래로 이동
    • w : 단어 단위로 앞으로 가기
    • b : 단어 단위로 뒤로가기
  • 텍스트 삽입
    • i : 커서가 놓인 위치에 삽입(insert)
    • a : 파일에 텍스트를 추가(apped)
    • o : 현재 커서가 놓인 행 아래에 새로운 행을 입력
    • O : 현재 커서가 놓인 행 위에 새로운 행을 입력(대문자 o)
  • vi는 삽입모드인지 명령모드인지 구별하는게 은근 헷갈린다.
  • 텍스트 삭제
    • x : 커서가 위치한 문자를 지운다.
    • D : 커서가 놓인 위치부터 그 줄의 끝까지 다 지운다.
    • d : 범위를 지정하는 명령어와 같이 사용
    • dd : 행 전체를 지운다.
    • dw : 단어단위로 지운다.
  • 삭제하고 u명령어를 통해 다시 복구할 수 있다.
  • U : 행전체를 복구
  • u : 삭제된 단어 복구
  • :redo => 파일의 상태를 취소 명령의 역방향으로 진행, u로 복구했던걸 다시 취소
  • ~ : 대소문자 변경
  • G : 파일의 마지막행으로 이동
  • nG : 파일의 n번째 행으로 이동
  • n : 마지막 탐색을 반복 => /word를 통해 나온 검색들을 탐색한다.

느낀점

  • vi를 공부하면서 반성을 하게되었다. vi가 이렇게 강력한 기능을 제공하는데, 나는 기껏해야 i, x, dd, /pattern만 알았다. 심지어 0,$을 이용하여 행의 시작과 끝을 이동하는 것도 몰랐고. 페이지단위로 어떻게 이동을 하는지. 특정 라인으로 어떻게 이동을 하는지도 잘 몰랐다. 이거 없이 어떻게 개발을 했나 싶다. 내가 주로 vi를 쓰는경우는 .zshrc 파일을 수정하거나 mysql이나 nginx conf파일을 수정하는정도 였는데, 대부분 라인이 100줄정도 밖에 안써서 vi에 대한 간절함을 못느꼈었다. 이번에 vi 명령어를 익혔으니 개발할때 많이 활용을 해야겠다.
Written on March 14, 2021