- datastructure
- Univ._Study
- Operating_System
- cloud_computing
- Android
- Database_Design
- Java
- 2023_1st_Semester
- codingTest
- programmers
- pytorch
- study
- Image_classification
- tensorflow
- 자격증
- Linux
- SingleProject
- 티스토리챌린지
- Unix_System
- Algorithm
- Personal_Study
- Python
- 리눅스마스터2급
- Kubernetes
- Baekjoon
- app
- c++
- Artificial_Intelligence
- 오블완
- C
코딩 기록 저장소
[23-01/유닉스 시스템] vi 사용법 본문
1. 유닉스 편집기
유닉스 편집기의 종류
■ 행 단위 편집기
- ed
- 유닉스 초기에 사용 -> 지금은 거의 사용하지 않음
- ex
- 단독으로 사용하기 보다는 vi와 연결하여 사용
■ 화면 단위 편집기
- vi
- vi와 유사한 화면 편집기
- 솔라리스는 vi 명령을 사용하면 vim을 실행함
- Emacs
- 막강한 기능 제공 -> 설치해서 사용해야 함
모드형과 비모드형
■ 모드형
- 명령모드에서 입력한 키는 명령으로 간주
- 입력모드에서 입력한 키는 데이터로 간주
- 모드를 바꾸기 위한 특수 키가 있음 (ex : Esc)
- vi는 모드형
■ 비모드형
- 입력한 모든 키는 데이터로 간주됨
- 명령은 특수키(Ctrl, Alt 등)와 일반키의 조합으로 구성
- ex) 아래 한글, 워드
2. vim의 사용 방법
vi 동작 구조
- 파일 내용을 잘못 수정한 경우 버퍼의 내용 무시
- 작업 취소기능 제공
vi 동작 모드
vim
- 새로운 파일 시작
- 파일 저장할 때 이름 지정
- 유닉스 초기에 사용 -> 지금은 거의 사용하지 않음
vi 파일 이름
- 지정한 이름이 없으면 새로운 파일 생성
- 지정한 이름이 있으면 기존 파일 열기
- vi first -> first라는 파일 열림
- vi -> 빈 파일이 열림
vi 종료와 저장
명령키 | 기능 |
:q | vim에서 작업한 것이 없을 때 그냥 종료함 |
:q! | 작업한 내용을 저장하지 않고 종료함 |
:w [ 파일명 ] | 작업한 내용을 저장만 함. 파일명을 지장하면 새 파일로 저장함 |
:wq, :wq! | 작업한 내용을 저장하고 vim 종료 |
ZZ ( Shift + zz ) | 작업한 내용을 저장하고 vim 종료 |
입력 모드로의 전환
- ESC 키를 누르면 다시 명령 모드가 됨
명령키 | 기능 |
i | 커서 앞에 입력함 (현재 커서 자리에 입력) |
a | 커서 뒤에 입력함 (현재 커서 다음 자리에 입력) |
o | 커서가 위치한 행의 다음 행에 입력함 |
l | 커서가 위치한 행의 첫 컬럼으로 이동해 입력함 |
A | 커서가 위치한 행의 마지막 컬럼으로 이동해 입력함 |
O | 커서가 위치한 행의 이전 행에 입력함 |
커서 이동
명령키 | 기능 |
k | 커서를 한 행 위로 이동시킴 |
j | 커서를 한 행 아래로 이동시킴 |
l | 커서를 한 문자 오른쪽으로 이동시킴 |
h | 커서를 한 문자 왼쪽으로 이동시킴 |
^ 또는 0 | 커서를 현재 행의 처음으로 이동시킴 |
$ | 커서를 현재 행의 마지막으로 이동시킴 |
- | 커서를 이전 행의 처음으로 이동시킴 |
+ 또는 Enter | 커서를 다음 행의 처음으로 이동시킴 |
H | 커서를 화면의 맨 위 행으로 이동시킴 |
M | 커서를 화면의 중간 행으로 이동시킴 |
L | 커서를 화면의 맨 아래 행으로 이동시킴 |
w | 커서를 다음 단어의 첫 글자 위치로 이동시킴 |
b | 커서를 앞 단어의 첫 글자 위치로 이동시킴 |
e | 커서를 다음 단어의 마지막 글자 위치로 이동시킴 |
■ 커서 이동 예제
화면 이동
■ 화면 이동
명령키 | 기능 |
Ctrl + u | 반 화면 위로 이동시킴 |
Ctrl + d | 반 화면 아래로 이동시킴 |
Ctrl + b | 한화면 위로 이동시킴 |
Ctrl + f | 한 화면 아래로 이동시킴 |
Ctrl + y | 화면을 한 행만 위로 이동시킴 |
Ctrl + e | 화면을 한 행만 아래로 이동시킴 |
■ 지정한 행으로 이동
명령키 | 기능 |
G (Shift + g) | 마지막 행으로 이동함 |
행번호G (Shift + g) | 지정한 행으로 이동함 |
:행번호 | 지정한 행으로 이동함 |
:$ | 마지막 행으로 이동함 |
수정 및 삭제
■ 내용 수정
명령키 | 기능 |
r | 커서가 위치한 문자를 다른 문자로 수정함 |
cw, #cw | 커서의 위치부터 현재 단어의 끝까지를 새로 입력한 내용으로 수정함. ESC키를 입력하면 수정이 종료됨 (#에는 수정할 단어의 수를 지정, 예를 들어 3cw는 커서 위치부터 3단어 수정) |
s, #s | 커서가 위치한 문자를 ESC키를 입력할 때까지 입력한 내용으로 수정함 (#에는 수정할 문자의 수를 지정, 예를 들어 5s는 커서 위치부터 5글자를 수정 |
cc | 커서가 위치한 행의 내용을 모두 수정함 |
C | 커서의 위치를 행의 끝까지 수정함 |
■ 내용 삭제 및 취소
명령키 | 기능 |
x, #x | 커서가 위치한 문자를 삭제함 (#은 삭제할 문자 수) |
dw, #dw | 커서 위치의 단어를 삭제함 (#은 삭제할 단어 수) |
dd, #dd | 커서가 위치한 행을 삭제함 (#은 삭제할 행의 수, 5dd는 커서 위치부터 5행을 삭제) |
u | 방금 수행한 명령을 취소함 |
U | 해당 행에서 한 모든 명령을 취소 |
:e! | 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업함 |
편집 기능
- 복사하기 / 붙이기 / 잘라내기 명령
- 버퍼의 사용
- 마지막 행 모드에서 복사하기와 잘라내기
- 검색하기 / 바꾸기
■ 복사하기 / 붙이기 / 잘라내기 명령
명령키 | 기능 |
yy, #yy | 커서가 위치한 행을 복사함 (#에는 복사할 행의 수 지정, 예를 들어 3yy하면 3행 복사) |
p(소문자) | 커서가 위치한 행의 아래쪽에 붙임 |
P(대문자) | 커서가 위치한 행의 위쪽에 붙임 |
dd, #dd | 커서가 위치한 행을 잘라둠 (#에는 잘라둘 행의 수 지정, 예를 들어 3dd 명령을 입력하면 3행 잘라두기 (삭제)) |
■ 버퍼의 사용
● 버퍼
- vim은 작업 내용을 버퍼에 저장 -> 실행 취소 가능
- 복사하기, 잘라내기에 사용
● 버퍼 종류
- Unnamed buffer : 이름 없는 버퍼
- Named buffers : 이름이 있는 버퍼
- Numbered buffers : 번호가 있는 버퍼
● 사용 예
- "a3yy -> 현재 행부터 아래로 3줄을 a버퍼에 저장
- "ap -> a버퍼의 내용을 붙이기
■ 마지막 행 모드에서 복사하기와 잘라내기
● 범위 지정하기
명령키 | 기능 |
1, $ 또는 % | 1행부터 마지막 행까지 지정 |
1 ,. | 1행부터 커서가 있는 행까지 지정함 |
.,$ | 커서가 있는 행부터 마지막 행까지 지정 |
,-3 | 현재 행부터 앞으로 세 번째 행까지 지정함 |
10,20 | 10행부터 20행까지 지정함 |
● 복사하기 / 잘라내기
명령키 | 기능 |
:#y | #으로 지정한 행을 복사함 (ex :10y -> 10행을 복사) |
:<범위>y | 범위로 지정한 행을 복사함 (:10,20y -> 10행~20행까지 복사) |
:#d | #으로 지정한 행을 삭제함 (:10d -> 10행 삭제) |
:<범위>d | 범위로 지정한 행을 삭제함 (:10,20d -> 10행~20행까지 삭제) |
:pu | 현재 행 다음에 버퍼의 내용을 붙임 |
:#pu | #으로 지정한 행 다음에 버퍼의 내용을 붙임 (:5pu) |
● 검색하기
- 검색을 위해 마지막 행 모드 이동 -> / 나 ? 입력
명령키 | 기능 |
/문자열 | 문자열을 아래 방향으로 검색함 |
?문자열 | 문자열을 위 방향으로 검색함 |
n | 원래 찾는 방향으로 다음 문자열을 찾음 |
N | 역방향으로 다음 문자열을 찾음 |
● 바꾸기
- 기존의 문자열을 다른 문자열로 바꾸려면 먼저 :를 입력 -> 마지막 행 모드로 이동
- 파일 전체 대상 또는 특정 범위만 저장 실행 가능
명령키 | 기능 |
:s/문자열1/문자열2/ | 커서가 위치한 행의 첫 번째 문자열1을 문자열2로 바꿈 |
:%s/문자열1/문자열2/g | 파일 전체에서 모든 문자열1을 문자열2로 바꿈 |
:<범위>s/문자열1/문자열2/ | <범위> 안의 모든 행에 대해서 각 행의 첫 번째 문자열을 찾아 문자열2로 바꿈 |
:<범위>s/문자열1/문자열2/g | <범위> 안의 모든 행에서 모든 문자열1을 문자열2로 바꿈 |
:<범위>s/문자열1/문자열2/gc | <범위> 안의 모든 행에 대해서 각 문자열1을 문자열2로 바꿀 때 수정할지 여부를 물음 |
비주얼 모드로의 전환
- 편집할 블록을 선택 -> 비주얼 모드
- v, V, Ctrl+v 명령키 입력 -> 서로 다른 비주얼 모드
● 비주얼 모드 전환키
구분 | 명령키 | 기능 |
비주얼 | v | 현재 커서 위치부터 블록 지정 |
비주얼 라인 | V(Shift + v) | 현재 커서가 위치한 행 단위로 블록 지정 |
비주얼 블록 | Ctrl + v | 현재 커서가 위치한 열부터 열 단위로 블록 지정 |
● 블록 적용 명령키
명령키 | 기능 |
y | 블록 복사 |
d | 블록 삭제 |
기타 유용한 명령키
■ 파일 읽어오기 / 여러 파일 편집하기 명령키
명령키 | 기능 |
:r 파일명 | 지정한 파일을 읽어 현재 커서 위치로 삽입함 |
:e 파일명 | 지정한 파일로 전환 (기존 파일을 :w로 저장한 뒤에 실행해야 함) |
:n | vim을 시작할 때 여러 파일명을 지정했을 경우 다음 파일로 자업을 이동함 |
■ vim에서 셸 명령 사용하기
명령키 | 기능 |
:! 셸 명령 | vim 작업을 잠시 중단하고 셸 명령을 실행함 (vim으로 돌아오려면 Enter키 입력) |
:sh | vim을 잠시 빠져나가서 셸 명령을 실행함 (vim으로 돌아오려면 exit 명령 입력) |
■ 기타 명령 알아보기
명령키 | 기능 |
^l (소문자 L) | 화면을 다시 출력함 |
^g | 현재 행 번호를 마지막 행에 출력함 |
Shift + j (대문자 J) | 현재 행과 아래 행을 연결하여 하나의 행으로 만듦 |
. | 바로 직전에 했던 명령을 반복함 |
3. vim의 환경 설정
vi 환경을 설정하는 특수 명령와 변수들
- 행 번호 표시
- 특수 문자 표시
- 현재 모드 표시하기
- 환경 설정값 표시하기
- 모든 환경 변수 표시하기
● vim 환경 설정 명령
명령 | 기능 |
:set nu | 파일 내용의 각 행에 행 번호를 표시함 (보이기만 할 뿐 저장은 되지 않음) |
:set nonu | 행 번호를 감춤 |
:set list | 눈에 보이지 않는 특수 문자를 표시함 (tab:^l, eol:$ 등) |
:set nolist | 특수 문자를 감춤 |
:set showmode | 현재 모드를 표시함 |
:set noshowmode | 모드 표시를 감춤 |
:set | set으로 설정한 모든 vim 변수를 출력함 |
:set all | 모든 vim 변수와 현재 값을 출력함 |
'학교 공부 > 유닉스 시스템' 카테고리의 다른 글
[23-01/유닉스 시스템] 파일 접근 권한 관리하기 (1) | 2023.04.27 |
---|---|
[23-01/유닉스 시스템] 배시 셸 활용하기 (2) | 2023.04.27 |
[23-01/유닉스 시스템] 파일 다루기 (0) | 2023.04.22 |
[23-01/유닉스 시스템] 디렉토리 다루기 (0) | 2023.04.22 |
[23-01/유닉스 시스템] 유닉스 개요 및 기본 사용법 (0) | 2023.04.22 |