당장 써먹는 vi 편집기 명령어

Tommy HoSung.Yi·2024년 8월 9일
0

linux

목록 보기
1/2
post-thumbnail

초창기 리눅스를 가지고 놀면서 현란하게 손가락을 움직이며 주변의 감탄사를 자아냈던 시절이 지나고 이제는 기록의 힘을 빌려야 하는 서글픈 나이가 되었지만 그래도 기록은 기억의 가오를 넘어선다는 어느 현자의 말을 믿고 차근하게 정리해 나가려 한다. 우선 vi편집기에 대한 정리로 실무에서 가장 많이 쓰는 것들로만 정리해 보자


커서의 이동

기본 커서 이동

  • h: 커서를 왼쪽으로 한 칸 이동
  • j: 커서를 아래쪽으로 한 줄 이동
  • k: 커서를 위쪽으로 한 줄 이동
  • l: 커서를 오른쪽으로 한 칸 이동

페이지 단위 이동

  • Ctrl + f: 한 페이지 앞으로 이동 (스크롤 다운)
  • Ctrl + b: 한 페이지 뒤로 이동 (스크롤 업)
  • Ctrl + d: 반 페이지 앞으로 이동
  • Ctrl + u: 반 페이지 뒤로 이동

문서 내 이동

  • gg: 문서의 첫 줄로 이동
  • G: 문서의 마지막 줄로 이동
  • nG 또는 :n (여기서 n은 숫자): n번째 줄로 이동

검색을 통한 이동

  • /pattern: 텍스트 내에서 pattern을 검색하고 다음으로 이동
  • ?pattern: 텍스트 내에서 pattern을 검색하고 이전으로 이동
  • n: 검색 결과에서 다음 항목으로 이동
  • N: 검색 결과에서 이전 항목으로 이동

삭제/복사/붙여넣기 모드

문서내 삭제

  • x: 커서가 위치한 한 문자를 삭제합니다.
  • dd: 커서가 위치한 한 줄을 삭제합니다.
  • d + 움직임 명령어: 지정된 범위만큼 삭제합니다.
    예: dw는 단어 하나를 삭제하고, d$는 현재 커서부터 줄의 끝까지 삭제합니다.
  • dG: 현재 커서부터 파일의 끝까지 모든 줄을 삭제합니다.
  • dgg: 현재 커서부터 파일의 시작까지 모든 줄을 삭제합니다

문서내 복사 및 붙여넣기

  • yy: 커서가 위치한 한 줄을 복사합니다.
  • y + 움직임 명령어: 지정된 범위만큼 복사합니다.
    예: yw는 단어 하나를 복사하고, y$는 현재 커서부터 줄의 끝까지 복사합니다.
  • yG: 현재 커서부터 파일의 끝까지 복사합니다.
  • ygg: 현재 커서부터 파일의 시작까지 복사합니다
  • p: 커서 다음 위치에 붙여넣기 합니다.
  • P: 커서 이전 위치에 붙여넣기 합니다

파일 저장 및 종료 모드

  • :q : 종료 (변경사항이 있을 경우 저장 여부를 물어봅니다.)
  • :q! : 저장하지 않고 강제로 종료
  • :w : 저장
  • :wq : 저장 후 종료
  • ZZ : 저장 후 종료(:wq와 동일)
  • :wq 파일 이름 : 저장할때 내가 원하는 파일 명으로 저장합니다.

문자열 치환하기 I

  • :s/old/new/ : 현재 줄에서 첫번째 일치하는 문자열 치환하기
    :s/apple/orange/ : app에서 orange로 치환하기

  • :s/old/new/g : 현재 줄에서 일치하는 모든 문자열 치환하기
    :s/apple/orange/g 현재 줄에서 모든 apple을 orange로 치환.

  • :range s/old/new/g : 특정 범위에서 문자열 치환하기
    :3,5s/apple/orange/g : 3줄부터 5줄까지 apple을 orange로 치환.

  • :%s/old/new/g : 파일 전체에서 문자열 치환하기
    :%s/apple/orange/g : 파일 전체에서 apple을 orange로 문자열 치환.

  • :%s/old/new/gc : 문자열 치환전에 확인 받기.
    :%s/apple/orange/gc : 전체 파일에서 문자열을 치환하기 전에 확인을 요청.

문자열 치환하기 II

  • :%s/\d\+apple/orange/g : 숫자 뒤에 있는 모든 apple을 orange로 변환,
    1234apple, 456apple을 orange로 문자열 변환.

  • :%s/apple/orange/gi : 대소문자 모두 무시하고 orange로 문자열 변환

Block 지정후 문자열 치환

  • 비주얼 모드를 사용하여 블록을 선택한 다음 명령모드에서 문자열을 치환.
  • Ctrl + v를 눌러서 Visual Block 모드로 전환
vim filename.txt

# 커서를 첫번째 줄의 "banana" 위치합니다.
# ctrl + v 조합을 눌러서 Visual Mode로 전환 합니다.
# 커서를 이동시켜 세줄의 "banana"텍스트를 모두 선택합니다. 

apple █banana cherry
apple █banana cherry
apple █banana cherry

# 커맨드 모드에서 :'<,'> 가 자동으로 입력됩니다.
# 여기서에서 s/banana/orange/g 입력 합니다.

:'<,'>s/banana/orange/g
  • Enter를 누루면 아래와 같이 banana가 orange로 변경되어 있음
apple orange cherry
apple orange cherry
apple orange cherry

행 번호 화면표시

행 번호 보이기 및 숨기기

  • set number 또는 :set nu : 현재 파일에서 모든 행에 번호가 표시됩니다
  • set nonumber 또는 :set nonu : 현재 파일에서 모든 행에 번호가 숨겨집니다.
  • [행번호] 또는 :[행번호]G : 특정 행 번호로 이동합니다.
    예를 들어, :5 또는 :5G라고 입력하면 파일의 5번째 행으로 이동합니다.
  • :set ruler 또는 :se ru : 현재 커서의 행번호 위치 확인합니다.
    이 명령어를 사용하면 화면 아래쪽 상태 표시줄에 현재 커서 위치의 행 번호와 열 번호가 표시됩니다.
  • Ctrl + G : 현재 커서의 행 번호 위치 한번 확인합니다.
    현재 커서 위치의 행 번호와 파일의 상태가 표시됩니다.
  • /.vimrc 파일에 set number를 추가 : 영구적으로 행 번호 표시 합니다.

다중 파일편집

두개 이상의 파일 편집

  • vim -o file1.txt file2.txt : vi 편집기도 동일하게 수행 가능합니다.
  • Ctrl+w를 누른 후 방향키 (j, k) : 현재 창에서 다른 창으로 이동합니다.
  • :wa : 전체 파일을 저장합니다.
  • :wqall : 모든 창을 닫습니다.

잘라내기와 붙여넣기

  • yy : 한행 복사하기
  • 2yy : 2줄 복사하기
  • yw : 다음 단어까지 복사하기
  • yiw : 한 단어 복사하기
  • yaw : 한 단어 복사하기 (공백포함)
  • p : 커서 뒤에 붙여넣기
  • P : 커서 앞에 붙여넣기
  • gp : 커서 뒤에 붙여넣고 붙여넣은 행 다음으로 커서 이동
  • gP : 커서 앞에 붙여넣고 붙연허은 행 다음이로 커서 이동
  • dd : 한 행 잘라내기
  • 2dd : 2줄 잘라내기
  • dw : 다음 단어까지 잘라내기
  • diw : 한 단어 잘라내기
  • daw : 한 단어 잘라내기 (공백포함)
  • :3,5d : 3행부터 5행까지 삭제

참고 문서

profile
이것 저것 사부작 사부작..

0개의 댓글