728x90
이번 포스트에서는 리눅스의 텍스트 에디터인 vi에 대해 다루겠다.
vi : 쉘 상에서 새로운 문서를 편집할 수 있는 환경을 제공한다.
명령 모드 :
vi 명령어를 통해 vi를 시작할 경우 실행되는 모드. 방향키를 통해 커서를 이동할 수 있다.
- k : 한 줄 위로 이동
- j : 한 줄 아래로 이동
- l : 한 문자 오른쪽으로 이동
- h : 한 문자 왼쪽으로 이동
- ^ / 0 : 줄의 시작으로 이동
- $ : 줄의 마지막으로 이동
- - : 이전 줄의 처음으로 이동
- + / Enter : 다음 줄의 처음으로 이동
- H : 키 화면 맨 위로 이동
- M : 키 화면 중간으로 이동
- L : 키 화면 맨 아래로 이동
- w : 다음 단어의 첫문자로 이동
- b : 이전 단어의 첫문자로 이동
- e : 다음 단어의 끝 글자로 이동
- ( : 현재 문장의 처음으로 이동
- ) : 다음 문장의 처음으로 이동
- { : 현재 문단의 처음으로 이동
- } : 다음 문단의 처음으로 이동
- [[ : 현재 함수의 처음으로 이동
- ]] : 다음 함수의 처음으로 이동
- ^u : 반 화면 위로
- ^d : 반 화면 아래로
- ^b : 한 화면 위로
- ^f : 한 화면 아래로
- ^y : 한 줄만 위로
- ^e : 한 줄만 아래로
- ^l : 파일 내용 다시 출력
- x, #x : 커서 위치의 문자 삭제
- X : 커서 바로 앞 글자를 삭제
- D : 커서 위치부터 줄 끝까지 삭제
- u : 방금 수행한 명령 취소
- U : 해당 줄의 모든 편집 취소
- d0, d$ : 커서가 있는 위치에서 행의 맨앞까지(맨뒤까지) 삭제
- dw, #dw : 커서 위치의 단어 삭제
- dd, #dd : 커서 위치의 줄 삭제
- r : 현재 커서위치의 한 문자 변경
- R : 현재 커서부터 ESC 입력까지 변경
- cw : 커서 위치부터 현재 단어의 끝까지 내용 변경
- cc : 커서가 위치한 줄의 내용 변경
- s, ns : 현재 커서부터 내용 변경
- C : 커서 위치에서 줄 끝까지 내용 변경
- yw : 현재 커서가 위치한 단어를 복사
- yy, #yy : 현재 행을 버퍼로 복사
- p : 현재 행 다음에 버퍼 내용 삽입
- P : 현재 행 위쪽에 버퍼 내용을 삽입
- dd, #dd : 현재 행을 잘라내기
- /문자열 : 현재 위치부터 파일의 아래 방향으로 문자열 탐색
- ?문자열 : 현재 위치부터 파일의 위 방향으로 문자열 탐색
- n : 다음 문자열 탐색
- N : 역방향으로 문자열 탐색
- ^g : 기본적인 파일 정보 출력
- J : 현재 줄과 다음 줄 연결
- . : 바로 이전에 수행한 명령 재실행
- >> : Tab 크기 만큼 오른쪽으로 이동
- << : Tab 크기 만큼 왼쪽으로 이동
- ~ : 현재 커서 위치의 한 문자를 소문자 혹은 대문자로 전환
입력 모드 :
명령 모드에서 i 또는 a 키를 눌러 입력 모드로 넘어갈 수 있다. 입력 모드에서는 자유롭게 코드나 글을 작성할 수 있으며, 명령 모드로 돌아갈 때에는 ESC를 누르면 된다.
- i : 커서가 현재 위치한 부분에서부터 시작
- a : 커서 바로 다음 부분부터 시작
- shift+spacebar : 영/한 변환
콜론 모드 :
명령 모드에서 : (콜론)을 입력하면 화면 맨 아랫줄에 입력 가능한 공간이 출력된다. 여기서 vi를 종료할 수 있다.
- #y : #으로 지정한 행을 복사 (ex: :10d -> 10행을 복사)
- <범위>y : 범위로 지정한 행을 복사 (ex: :10, 20d -> 10행~20행을 복사)
- #d : #으로 지정한 행을 삭제 (ex: :10d -> 10행을 삭제)
- <범위d> : 범위로 지정한 행을 복사 (ex: :10, 20d -> 10행~20행을 삭제)
- pu : 현재 행 다음에 버퍼 내용 붙이기
- #pu : #으로 지정한 행 다음에 버퍼 내용 붙이기
- 1, $ : 첫 줄에서 마지막 줄까지 (파일내의 모든 줄)
- % : 첫 줄에서 마지막 줄까지 (파일내의 모든 줄)
- 1,. : 첫 줄에서 현재 줄까지
- .,$ : 현재 줄에서 마지막 줄까지
- .-2 : 현재 줄에서 앞쪽으로 2번째 줄
- 10,20 : 10번째 줄에서 20번째 줄까지
- s/문자열1/문자열2/ : 커서가 위치한 줄에서만 문자열1을 문자열2로 바꿈
- <범위>s/문자열1/문자열2/ : <범위>안의 모든 줄에 대해서 각 줄의 첫번째 문자열1을 찾아 문자열2로 바꿈
- <범위>s/문자열1/문자열2/g : <범위>안의 모든 줄에 대해서 모든 문자열1을 문자열2로 바꿈
- <범위>s/문자열1/문자열2/gc : <범위>안의 모든 줄에 대해서 각 문자열1을 문자열2로 치환할 때 수정할지 안 할지를 묻는다.
- r 파일명 : 지정한 파일을 현재 커서 위치에 삽입
- e 파일명 : 현재 파일 대신 지정한 파일을 읽음
- n : vi 시작시 여러 파일을 지정하였을 경우 다음 파일로 이동
- ! 명령 : vi를 중단하고 지정한 명령 수행
- r! 명령 : 실행 결과를 편집 파일에 끼워넣기 한다.
- sh : vi를 잠시 빠져나가서 쉘을 수행
- f 파일명 : 파일 이름을 지정한 이름으로 변경
- w %.old : 현재 파일을 .old 이름으로 저장해 둘 때
- set nu : 파일 내용의 각 줄에 줄 번호 표시
- set nonu : 줄 번호 취소
- set list : 눈에 보이지 않는 특수문자표시
- set nolist : 특수문자보기 기능 취소
- set showmode : 현재 모드 표시
- set noshowmode : 현재 모드 표시기능 취소
- set : set으로 설정한 모든 vi변수 출력
- set all : 모든 vi 변수와 현재 값 출력
- set ts=4 : Tab 크기를 4로 조정
- g/pattern : 파일에서 패턴이 포함된 가장 마지막 위치를 찾아 이동한다.
- g/pattern/p : 파일에서 패턴이 포함된 모른 라인을 출력한다.
- g/pattern/d : 파일에서 패턴이 포함된 모른 라인을 삭제한다.
'Operating System > Linux' 카테고리의 다른 글
[명령어] Makefile (0) | 2022.06.27 |
---|---|
[명령어] gcc (0) | 2022.06.26 |
[명령어] crontab, awk, du (0) | 2022.06.24 |
[명령어] tar, gzip, compress/uncompress (0) | 2022.05.10 |
[명령어] find, at (0) | 2022.05.09 |