Jasontreks Blog

DM 보내기


Send

문서 편집

리눅스 터미널에서는 vi를 이용해 문서를 편집할 수 있다. vi에서는 문서 편집 기능들이 명령 모드와 입력 모드로 구분되어 있다.

vi 동작 모드

  • 명령 모드: 커서 이동, 페이지 이동, 삭제, 검색, 저장
  • 입력 모드: 파일에 실제 내용을 입력

모드 전환: i, l, a, A, o, O

  • i: 커서 앞에서부터 입력
  • a: 커서 뒤에서부터 입력(커서 뒤로 한칸 이동)
  • o: 현재 커서의 다음 행에서부터 입력

시작, 종료, 커서 이동

vi 편집기 시작과 종료

~$ vi test.txt

"test.txt"라는 이름의 파일을 열기. 파일이 없으면 빈 파일 열기.

~$ vi

빈 파일이 열린다.

명령 모드에서 저장 및 종료 명령은 아래와 같다.

기능
:q작업한것이 없을 때 그냥 종료, 작업한게 있으면 메세지 출력
:q!작업 내용을 무시하고 ㅈ강제 종료
:w 파일명작업 내용 저장만
:wq, ZZ작업내용 저장하고 종료

커서 이동

  • 상하좌우: 방향키 또는 k, l, j, h
  • 현재 행에서 앞, 끝: ^, $
  • 현재 화면에서 첫, 중간, 끝 행: H, M, L
  • 앞 단어 첫, 다음 단어 첫: b, w
  • 현재 단어부터 다음 단어의 끝: e

화면 이동

한 화면에 다 보이지 않는 파일은 화면 이동 기능을 사용해야 한다.

반 화면 이동: ^u, ^d

  • ^u: 위
  • ^d: 아래

한 화면 이동: ^b, ^f

  • ^b: 위
  • ^f: 아래

한 행만 이동: ^y, ^e

  • ^y: 위
  • ^e: 아래

특정 행으로 이동

  • G, :$ : 파일의 마지막 행으로 이동
  • 행번호G, :행번호 : 지정한 행 번호로 이동

수정, 삭제, 복붙

내용 수정

  • r: 커서가 위치한 글자 수정
  • 숫자cw: 현재 단어부터 지정한 단어 수만큼 수정
  • 숫자s: 커서 위치부터 지정한 글자 수만큼 수정
  • cc: 현재 행 전부 수정
  • C: 커서 위치부터 현재 행의 끝까지 수정

내용 삭제

입력 모드에서: Delete 키

명령 모드에서는 다음 여러 방식으로 삭제가 가능하다.

  • x 또는 숫자x: 현재 글자 또는 지정한 수만큼 글자 삭제
  • dw 또는 숫자dw: 현재 단어 또는 지정한 수만큼 단어 삭제
  • dd 또는 숫자dd: 현재 행 삭제 또는 지정한 수만큼 행 삭제 (잘라내기 기능)
  • D: 커서 위치부터 행의 끝까지 삭제

명령 취소

  • u: 명령 취소
  • U: 현재 행에서의 모든 명령 취소
  • :e! : 마지막 저장한 내용으로 롤백

복붙

  • yy 또는 숫자yy: 현재 또는 여러 행 복사
  • dd 또는 숫자dd: 현재 또는 여러 행 잘라내기
  • p: 복사한 내용 붙이기
  • P: 현재 항의 위쪽에 붙이기

네임드 버퍼를 이용해 윈도의 클립보드 기능처럼 복사한 내용의 저장 공간을 따로 지정할수도 있다. 버퍼이름yy -> 버퍼이름p

범위지정 복사

여러 행에 대해 범위를 지정해 복사도 가능하다. 우선 범위 지정은 다음과 같다.

:시작행,끝행 시작행 또는 끝행에 올 수 있는것: 숫자, .(현재 행), $(마자막 행)

  • :n,m : n번 행부터 m번 행까지
  • :n,$ : n번 행부터 마지막 행까지
  • :n,. : n번 행부터 현재 행까지
  • :.,$ : 현재 행부터 마지막 행까지

그리고 여기다가 다음 명령어들을 붙여 범위 지정 복사 명령을 완성한다.

  • 범위y: 지정한 범위의 행을 복사
  • 범위d: 지정한 범위의 행을 잘라내기

검색

검색하기

  • /문자열: 아래 방향으로 검색
  • ?문자열: 위 방향으로 검색
  • n 또는 N: 지정한 방향 또는 반대 방향으로 다음 문자열 검색

바꾸기

  • :s/문자열1/문자열2/: 현재 행에서 첫번째로 나오는 문자열1을 문자열2로 바꿈
  • :%s/문자열1/문자열2/g: 파일 전체의 모든 문자열1을 문자열2로 바꿈
  • :범위s/문자열1/문자열2/: 범위 내 각 행에서 첫번째로 나오는 문자열1을 문자열2로 바꿈
  • :범위s/문자열1/문자열2/g: 범위 내 모든 문자열1을 문자열2로 바꿈
  • :범위s/문자열1/문자열2/gc: 범위 내 모든 문자열1을 문자열2로 바꿀 때 수정할지 물음

vi 환경 설정

set 명령어로 vi 편집기의 환경을 설정할 수 있다.

  • set nu: 행 번호 표시
  • set nonu: 행 번호 감추기
  • set list: 특수문자 표시
  • set nolist: 특수문자 감추기
  • set showmode: 현재 모드를 표시
  • set noshowmode: 현재 모드 감추기
  • set: 설정한 모든 vi 설정 값을 출력
  • set all: 모든 vi 환경변수와 현재 값을 출력

사용자 홈 디렉토리에 .exrc 파일을 만들어놓으면 vi에서 설정한 설정값들이 저장된다.