문서 편집
리눅스 터미널에서는 vi를 이용해 문서를 편집할 수 있다. vi에서는 문서 편집 기능들이 명령 모드와 입력 모드로 구분되어 있다.
vi 동작 모드
- 명령 모드: 커서 이동, 페이지 이동, 삭제, 검색, 저장
- 입력 모드: 파일에 실제 내용을 입력
모드 전환: i, l, a, A, o, O
- i: 커서 앞에서부터 입력
- a: 커서 뒤에서부터 입력(커서 뒤로 한칸 이동)
- o: 현재 커서의 다음 행에서부터 입력
시작, 종료, 커서 이동
vi 편집기 시작과 종료
"test.txt"라는 이름의 파일을 열기. 파일이 없으면 빈 파일 열기.
빈 파일이 열린다.
명령 모드에서 저장 및 종료 명령은 아래와 같다.
| 키 | 기능 |
|---|---|
| :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에서 설정한 설정값들이 저장된다.