1. vi 사용법
- 입력 모드: 실제로 내용을 입력할 수 있는 모드. ex) i, l, a, A, o, O
- 명령 모드: 입력한 키를 명령어로 해석. ex) 커서 이동, 페이지 이동, 글자 삭제, 행 삭제 등
- 마지막 행 모드: 특별 명령 처리. ex) :, /, ?
1-1. vi 시작하고 종료하기
- vi: 지정한 파일을 편집한다.
- 형식: vi [파일]
- 마지막 행 모드로 가려면 :(쌍점)을 누른다.
vi의 저장과 종료 명령 키
- 마지막 행 모드
:q :vi에서 작업한 것이 없을 때 그냥 종료.
:q! :작업한 내용을 저장하지 않고 종료.
:w [파일명] :작업한 내용을 저장만 함. 파일명을 지정하면 새 파일로 저장.
:wq, :wq! :작업한 내용을 저장하고 vi를 종료.
- 명령 모드
ZZ : 작업한 내용을 저장하고 vi를 종료.
1-2. 입력 모드로 전환
- i: 커서 앞에 입력.
- a: 커서 뒤에 입력.
- o: 커서가 위치한 행의 다음 행에 입력.
- O: 커서가 위치한 행의 이전 행에 입력.
- I: 커서가 위치한 행의 첫 칼럼으로 이동하여 입력.
- A: 커서가 위치한 행의 마지막 칼럼으로 이동하여 입력.
1-3. 커서 및 화면 이동.
- k: 한 행 위로 이동.
- j: 한 행 아래로 이동.
- l: 한 글자 오른쪽으로 이동.
- h: 한 글자 왼쪽으로 이동.
- ^ 또는 0: 현재 행의 처음으로 이동.
- $: 현재 행의 마지막으로 이동.
- -: 앞 행의 처음으로 이동.
- +: 다음 행의 처음으로 이동.
- H: 맨 윗 행으로 이동.
- M: 중간 행으로 이동.
- L: 맨 아랫 행으로 이동.
- w: 다음 단어의 첫 글자로 이동.
- b: 앞 단어의 첫 글자로 이동.
- e: 다음 단어의 마지막 글자로 이동.
특정 행으로 바로 이동하기
- G: 파일의 마지막 행으로 커서가 이동.
- 행 번호G: 지정한 행 번호로 커서가 이동.
- :행 번호 :지정한 행 번호로 이동.
- :$ :파일의 마지막 행으로 커서가 이동.
1-4. 내용 수정하기
- r: 커서가 위치한 글자를 다른 글자로 수정.
- cw, #cw: 커서 위치부터 현재 단어의 끝까지 수정.
- s, #s: 커서 위치부터 Esc 키를 입력할 때까지 수정.
- cc: 커서가 위치한 행의 내용을 모두 수정.
- C: 커서 위치부터 행의 끝까지 수정.
1-5. 내용 삭제하기
- x, #x: 커서 위치의 글자를 삭제.
- dw, #dw: 커서 위치의 단어를 삭제.
- dd, #dd: 커서 위치의 행을 삭제.
- D: 커서 위치부터 행의 끝까지 삭제.
1-6. 명령 취소하기
- u: 명령을 취소.
- U: 해당 행에서 한 모든 명령을 취소.
- :e! : 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업.
1-7. 복사하기 또는 잘라서 붙이기
- yy, #yy: 커서가 위치한 행을 복사
- p: 커서가 위치한 행의 아래쪽에 붙임
- P: 커서가 위치한 행의 위쪽에 붙임
- dd, #dd: 커서가 위치한 행을 잘라둔다.
네임드 버퍼 사용하기
언네임드 버퍼: yy 명령 키로 복사하거나 dd 명령 키로 잘라낼 경우, 버퍼에 저장된다. 언네임드 버퍼는 내용을 하나만 저장할 수 있다.
네임드 버퍼: 각각 다른 이름을 붙인 버퍼에 독립적으로 내용을 저장하고 사용할 수 있다. 이름을 붙일 때는 “+문자 또는 ”+숫자의 형태로 사용한다.
- "a 버퍼에 복사한 내용을 저장하려면 “ayy를 입력, 이를 행의 아래쪽에 붙이려면 ”ap와 같이 ‘버퍼 이름+p’를 입력.
범위 지정 명령 키
- 1,$ 또는 % : 1행부터 마지막 행까지.
- 1,. : 1행부터 커서가 있는 행까지.
- .,$ : 커서가 있는 행부터 마지막 행까지.
- .,.+2 : 현재 행과 두 번째 아랫행까지. (총 세 행))
- 10,20 : 10행부터 20행까지.
마지막 행 모드에서의 복사하기, 잘라내기, 붙이기 명령 키
- :#y : #로 지정한 행을 복사.
- :<범위>y : 범위로 지정한 행을 복사.
- :#d : #로 지정한 행을 잘라냄.
- :<범위>d : 범위로 지정한 행을 잘라냄.
- :pu : 현재 행 다음에 버퍼의 내용을 붙임.
- :#pu : #로 지정한 행 다음에 버퍼의 내용을 붙임.
1-8. 검색하기와 바꾸기
- /문자열: 문자열을 아래 방향으로 검색.
- ?문자열: 문자열을 위 방향으로 검색.
- n: 원래 찾던 방향으로 다음 문자열 검색, N: 반대 방향으로 다음 문자열 검색.
바꾸기
- :s/문자열1/문자열2 : 커서가 위치한 행에서 첫 번째로 나오는 문자열 1을 문자열 1로 바꿈.
- :%s/문자열1/문자열2/g : 파일 전체에서 모든 문자열 1을 문자열 2로 바꿈.
- :<범위>s/문자열1/문자열2 : 범위 내 모든 각 행에서 첫 번째로 나오는 문자열 1을 문자열 2로 바꿈.
- :<범위>s/문자열1/문자열2/g : 범위 내 모든 행에서 문자열 1을 문자열 2로 바꿈.
- :<범위>s/문자열1/문자열2/gc : 범위 내 모든 행에서 문자열 1을 문자열 2로 바꿀 때 수정 여부 물음.
1-9. 기타 유용한 명령 키
- :r 파일 : 지정한 파일을 읽어 들여 현재 커서 위치에 삽입
- :e 파일 : 지정한 파일로 전환(기존 파일은 :w로 저장한 뒤에 실행) :e! 파일 : 저장하지 않고 전환.
- :n : vi시작 시 여러 파일을 지정했을 경우 다음 파일로 작업을 이동.
vi에서 셸 명령 사용하기
- :! 셸 명령 : vi작업을 중단하고 셸 명령을 실행 (명령 하나에 셸 명령 한번)
- :sh : vi를 잠시 빠져나가서 셸 명령을 실행, exit 명령을 입력해서 돌아옴 (제한 x)
기타 명령 키
- Ctrl+l : 현재 화면을 다시 출력 ( 상대방이 보낸 메시지가 출력되어 화면이 이상할 때 )
- Ctrl+g : 현재 커서 위치의 행 번호를 마지막 행에 출력.
- Shift+j or 대문자 L : 현재 행과 아랫행을 연결하여 한 행으로 만듦.
- .(마침표) : 바로 직전에 했던 명령을 반복.
- ~(물결표) : 커서가 놓인 곳의 글자가 소문자면 대문자, 대문자면 소문자로 됨. 커서는 오른쪽 한 칸 이동.
2. vi 환경 설정
2-1. vi 내에서 명령으로 설정하기
- :set nu : 행 번호가 표시.
- :set list : 특수문자를 표시.
- :set : set으로 설정한 모든 vi 환경 설정 값을 출력.
- :set all : 모든 환경 변수와 현재 값 표시.
- vi 환경 설정은 셸의 환경 변수인 EXINIT에도 가능함.
'대학교 2학년 1학기 > 리눅스 프로그래밍' 카테고리의 다른 글
프로세스 관리하기 (0) | 2022.05.01 |
---|---|
파일 접근 권한 관리하기 (0) | 2022.04.04 |
셸 사용하기 (0) | 2022.04.04 |
디렉터리와 파일 사용 (0) | 2022.04.04 |
리눅스 입문 (0) | 2022.04.04 |