티스토리 뷰
1. 유닉스 편집기
유닉스에서는 편집기를 이용해 파일 작성 및 수정 가능함
주로 행 단위 편집기/ 화면 단위 편집기 (gedit,gvim) 를 사용
유닉스 편집기의 종류
행 단위 편집기
ed : 유닉스 초기에 사용
ex : 단독으로 사용하기보단 vi와 연결해 사용
화면 단위 편집기
윈도우처럼 전체 내용을 화면 단위로 보면서 커서를 이동하며 작업 (emacs, vi)
모드형과 비모드형
- 비모드형
입력한 모든 키는 데이터로 간주됨
명령은 특수키 (Ctrl,, Alt등) 와 일반키의 조합으로 구성
예 : 아래 한글, 워드
- 모드형
명령모드에서 입력한 키는 명령으로 간주
입력모드에서 입력한 키는 데이터로 간주
모드를 바꾸기 위한 특수 키가 있음 (예 : ESC)
vim은 모드형
비모드형에서의 키보드의 a는 항상 a문자이지만 모드형은 명령일수 있음
입력모드, 명령모드, 마지막 행 모드 등의 다양한 모드가 존재하므로 모드형이라고함
-> 비모드형에서의 ctrl키와 조합되어야 명령이지만 유닉스에서는 명령모드에서는 모든 키가 명령
2. vim을 실행하는 3가지 방법
1. 이미 존재하는 파일명을 지정하여 편집기를 실행
vim 기존 파일명
존재하는 파일의 내용이 vim 편집기에 출력됨
2. 존재하지 않는 파일명으로 편집기를 실행
vim 새파일명
새로운 이름의 파일은 빈파일이므로 편집기에는 아무내용이없고 저장을 해야 파일이 최종적으로 생성
3. 파일명을 지정하지 않고 실행
vim
첫화면에서 vim에 대한 기본 정보를 확인
편집기로 빈 파일이 열리며 저장할때 파일명을 지정
- vim 의 저장 과정
vim 는 하드디스크에서 기존파일을 편집기로 열어서 작업
편집기를 통해 새로 작성되거나 수정중인 파일은 저장하기전까지 버퍼에만 존재
-> 저장을 작업을 통해 하드디스크에 저장
새로운 파일 이름을 지정하거나 아무 지정도 하지않고, 편집기를 열었을 경우도 저장하기 전까지 버퍼에만 존재
파일 내용을 잘못 수정 한 경우 버퍼의 내용 무시할수있도록 작업 취소기능 제공
vim는 명령 모드로 시작
대/소문자로 구분해 별도의 명령으로 해석
vim의 동작모드 : 입력모드 / 명령모드 / 마지막 행 모드로 구분
- 입력모드
실제로 편집기에 내용을 입력할 수있는 상태
마지막 행 모드에서 파일을 디스크에 저장하기전까지 키보드로 입력하는 모든 내용을 버퍼에 저장
- 명령모드
다양한 vi명령어로 입력할 수있는 상태
커서의 이동, 페이지 이동, 문자와 행의 삭제, 종료 기능 ...
- 마지막 행모드
화면의 맨마지막에서 명령을 입력받음
검색,저장,바꾸기,행의이동,종료기능을 할수있는 상태
- vim의 종료와 저장
마지막 행 모드에서 입력
저장 후 종료 또는 그냥 종료
! 는 강제
명령키 | 기능 |
:q | vim 에서 작업한것이 없으면 그냥 종료 |
:q! | 작업한 내용을 저장하지않고 종료 |
:w [파일명] | 작업한 내용을 저장만한다. 파일명을 지정하면 새파일로 저장 |
:wq, :wq! | 작업한 내용을 저장하고, vim 을 종료 |
ZZ | 작업한 내용을 저장하고, vim을 종료 |
- 입력모드로의 전환 (Test)
vi는 명령 모드에서 시작되기 때문에 입력모드로 전환되는 명령키를 입력
입력모드에서 Esc 키를 누르면, 다시 명령 모드로 전환
명령키 | 기능 |
i | 커서 앞에 입력 (현재 커서 자리에 입력) |
a | 커서 뒤에 입력 (현재 커서 다음 자리에 입력) |
o | 커서가 위치한 행의 다음행에 입력 |
l | 커서가 위치한 행의 첫 컬럼으로 이동해 입력 |
A | 커서가 위치한 행의 마지막 컬럼으로 이동해 입력 |
O | 커서가 위치한 행의 이전 행에 입력 |
r | 한글자만 수정 후 다시 명령 모드로 전환 |
- vim 커서 이동 명령키 (Test)
명령키 | 기능 |
k | 커서를 한 행 위로 이동 |
j | 커서를 한 행 아래로 이동 |
l | 커서를 한 문자 오른쪽으로 이동 |
h | 커서를 한 문자 왼쪽으로 이동 |
^ 또는 O | 커서를 현재 행의 처음으로 이동 |
$ | 커서를 현재 행의 마지막으로 이동 |
- | 커서를 이전 행의 처음으로 이동 |
+ 또는 enter | 커서를 다음 행의 처음으로 이동 |
H | 커서를 화면의 맨 위 행으로 이동 |
M | 커서를 화면의 중간 행으로 이동 |
L | 커서를 화면의 맨 아래 행으로 이동 |
w | 커서를 다음 단어의 첫 글자 위치로 이동 |
b | 커서를 앞 단어의 첫 글자 위치로 이동 |
e | 커서를 다음 단어의 마지막 글자 위치로 이동 |
- vim 화면 이동 명령키
명령키 | 기능 |
Ctrl + u | 반 화면 위로 이동 |
Ctrl + d | 반 화면 아래로 이동 |
Ctrl + b | 한 화면 위로 이동 |
Ctrl + f | 한 화면 아래로 이동 |
Ctrl + y | 화면을 한 행만 위로 이동 |
Ctrl + e | 화면을 한 행만 아래로 이동 |
- vim 지정한 행으로 이동 명령키 (Test)
명령키 | 기능 |
G | 마지막 행으로 이동 |
행번호G (예시)31G | 지정한 행으로 이동 |
:행번호 | 지정한 행으로 이동 |
gg | 맨위로 커서 이동 |
:$ | 마지막 행으로 이동 |
- vim 내용 수정 명령키
명령키 | 기능 |
r | 커서가 위치한 문자를 다른문자로 수정 |
cw, #cw (예시)3cw :커서 위치부터 3단어 수정 | 커서의 위치부터 현재 단어의 끝까지를 새로 입력한 내용으로 수정 (ESC키를 입력하면 수정 종료) |
s, #s | 커서가 위치한 문자를 ESC 키를 입력할때까지 입력한내용으로 수정 |
cc | 커서가 위치한 행의 내용을 모두 수정 |
C | 커서의 위치한 행의 끝까지 수정 |
- vim 내용삭제 및 취소 명령키
명령키 | 기능 |
x, #x | 커서가 위치한 문자를 삭제 (#은 삭제할 문자수, 예를들어 3x는 3글자 삭제) |
dw, #dw | 커서 위치의 단어를 삭제 (#은 삭제할 단어수) |
dd, #dd | 커서 위치한 행을 삭제 |
u | 방금 수행한 명령을 취소 |
U | 해당 행에서 한 모든 명령을 취소 |
:e! | 마지막으로 저장한 내용 이후의것을 버리고 새로 작업 |
- vim 복사하기와 붙이기 명령키
명령키 | 기능 |
yy, #yy | 커서가 위치한 행을 복사한다 (#에는 복사할 행의 수 지정) |
p소문자 | 커서가 위치한 행의 아래쪽에 붙임 |
p대문자 | 커서가 위치한 행의 위쪽에 붙임 |
dd, #dd | 커서가 위치한 행을 잘라둔다 (#에는 잘라둘 행의 수 지정) |
- 버퍼 : vim 은 작업 내용을 버퍼에 저장 / 복사하기, 잘라내기에 사용
버퍼 종류
unnamed buffer : 이름 없는 버퍼
Named buffres : 이름이 있는 버퍼
Numbered buffers : 번호가 있는 버퍼
[사용예] a3yy -> 현재 행부터 아래로 3줄을 a버퍼에 저장, ap -> a버퍼의 내용을 붙이기
- vim 범위 지정 명령키
명령키 | 기능 |
1, $ 또는 % | 1행부터 마지막행까지 지정 |
1,. ( ,.는 현재위치 ) | 1행부터 커서가 있는 행까지 지정 |
.,$ | 커서가 있는 행부터 마지막행까지 지정 |
,-3 | 현재 행부터 앞으로 세번째 행까지 지정 |
10,20 | 10행부터 20행까지 지정 |
- vim 마지막 행 모드에서의 이동/복사/삭제 명령키
명령키 | 기능 |
:#y | #으로 지정한 행을 복사 |
:범위y | 범위로 지정한 행을 복사 (범위 : 10,20 -> 10행~20행) |
:#d | #으로 지정한 행을 삭제 |
:범위d | 범위로 지정한 행을 삭제 |
:pu | 현재 행 다음에 버퍼의 내용을 붙임 |
:#pu | #으로 지정한 행 다음에 버퍼의 내용을 붙임 |
- vim 검색 명령키
명령키 | 기능 |
/문자열 | 문자열을 아래 방향으로 검색 |
?문자열 | 문자열을 위 방향으로 검색 |
n | 원래 찾는 방향으로 다음 문자열을 찾음 |
N | 역방향으로 다음 문자열을 찾음 |
- vim 바꾸기 명령키
명령키 | 기능 |
: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 | 현재 커서가 위치한 열부터 열단위로 블록 지정 |
y: 블록복사
d: 블록삭제
- vim 파일 관련 명령키
명령키 | 기능 |
:r 파일명 | 지정한 파일을 읽어 현재 커서 위치로 삽입 |
:e 파일명 | 지정한 파일로 전환 (기존파일을 :w로 저장한뒤에 실행) |
:n | vim을 시작할때 여러 파일명을 지정할경우 다음파일로 작업을 이동 |
- vim에서 셸 명령 사용 방법
명령키 | 기능 |
:! 셸명령 | vim 작업을 잠시 중단하고 셸명령을 실행 |
:sh | vim을 잠시 빠져나가 셸 명령 실행 |
'이론 > 유닉스 기초' 카테고리의 다른 글
3장. 파일 다루기 (0) | 2022.04.06 |
---|---|
2장. 디렉토리 다루기 (0) | 2022.04.06 |
1장. 유닉스 사용법 및 개요 (0) | 2022.04.05 |