
리눅스는 무료로 사용 가능한 유닉스다.
최초 버전은 리누스 토르발스가 최초로 작성하였고 그는 커널을 개발했다.
커널을 기반으로 만든 배포판들중 하나가 CentOS 이다.
셸은 커널과 하드웨어를 포함하는 것으로 명령어 해석기를 나타낸다. (bash, csh ... )
리차드 스톨만에 의해 시작되었다. 이 프로젝트의 목표는 모두가 공유할 수 있는 소프트웨어를 만드는 것이었다.커널 버전이 3.17.4 라면
대부분의 리눅스 배포판에는 진짜 vi 가 없다. 대신 브람 무어나르(Bram Moolenar)가 만든 vim (Vi IMproved) 이라는 vi 확장판이 있고 대체적인 리눅스 시스템에는 vi 라는 이름으로 심볼릭 링크되어 사용된다.
gedit, vi (visual editor) 의 사용법을 알아보자.
명령 모드
vi 가 실해오디면 기본적으로 명령 모드로 시작된다. 이때는 대부분의 키가 명령어를 의미하게 된다.
입력 모드 ⭐️
i / a 문서를 작성
i는 현재 커서의 위치부터 입력한다.
I는 현재 커서 줄의 맨 앞에서부터 입력한다.
a는 현재 커서의 위치 다음 칸부터 입력한다.
A현재 커서 줄의 맨 마지막부터 입력한다.
ex 모드
: + 저장(w), 종료(q), 취소(i) 를 수행한다.| 키 | 이동 방향 |
|---|---|
| h | 왼쪽으로 이동 |
| j | 아래로 이동 |
| k | 위로 이동 |
| l | 오른쪽으로 이동 |
| w | 다음 단어의 시작으로 이동 |
| b | 이전 단어의 시작으로 이동 |
| e | 현재 단어의 끝으로 이동 |
| 0 (제로) | 현재 줄의 시작으로 이동 |
| $ | 현재 줄의 끝으로 이동 |
| gg | 파일의 시작으로 이동 |
| G | 파일의 끝으로 이동 |
| Ctrl-f | 아래로 페이지 이동 |
| Ctrl-b | 위로 페이지 이동 |
| ^ | 현재 줄의 첫 번째 공백이 아닌 문자로 이동 |
| Shift-^ | 현재 줄의 첫 번째 문자로 이동 |
| % | 대응하는 괄호, 대괄호 또는 중괄호로 이동 |
| /패턴 | "패턴"을 앞으로 검색 |
| ?패턴 | "패턴"을 뒤로 검색 |
| n | 같은 방향으로 마지막 검색 반복 |
| N | 반대 방향으로 마지막 검색 반복 |
| Ctrl-o | 이전 커서 위치로 이동 |
| Ctrl-i | 다음 커서 위치로 이동 |
| 명령어 | 실행 |
|---|---|
| o | 현재 줄 아래에 빈 줄 추가 |
| O | 현재 줄 위에 빈 줄 추가 |
| 명령어 | 삭제 내용 |
|---|---|
| x | 커서가 위치한 문자 한 개 삭제 |
| 3x | 커서로부터 세 문자 삭제 |
| dd | 현재 줄 삭제 |
| 5dd | 현재 위치로부터 다섯 줄 삭제 |
| dW | 현재 위치로부터 다음 단어의 끝까지 삭제 |
| d$ | 현재 위치로부터 현재 줄의 끝까지 삭제 |
| d0 | 현재 위치로부터 현재 줄의 시작까지 삭제 |
| d^ | 현재 위치로부터 현재 줄의 첫 번째 비공백 문자까지 삭제 |
| dG | 현재 위치로부터 파일 끝까지 삭제 |
| d20G | 현재 위치로부터 20번째 줄까지 삭제 |
d명령어는 텍스트를 단순히 삭제하는 것이 아니고 텍스트를 자른다. 삭제된 내용은 버퍼에 복사되어 p 명령어로 해당 내용을 다시 불러와 커서 앞, 뒤로 붙일 수 있다.
| 명령어 | 복사 내용 |
|---|---|
| yy | 현재 줄 복사 |
| 5yy | 현재 위치로부터 다섯 줄 복사 |
| yW | 현재 위치로부터 다음 단어의 끝까지 복사 |
| y$ | 현재 위치로부터 현재 줄의 끝까지 복사 |
| y0 | 현재 위치로부터 현재 줄의 시작까지 복사 |
| y^ | 현재 위치로부터 현재 줄의 첫 번째 비공백 문자까지 복사 |
| yG | 현재 위치로부터 파일 끝까지 복사 |
| y20G | 현재 위치로부터 20번째 줄까지 복사 |
u명령어는 실행을 취소한다.
p명령어는 해당 줄의 바로 다음 라인에 버퍼로 복사, 잘라진 내용을 붙여넣고,
P명령어는 해당 줄의 윗 라인에 버퍼로 복사, 잘라진 내용을 붙여넣는다.
J 명령어를 실행하면 EOL (End Of Line) 이 취소되는 것처럼 줄바꿈이 사라지고 윗 라인과 줄이 합쳐진다.f 는 커서가 위치한 줄에서 특정 문자 위치로 커서를 검색할 때 사용한다. fa 는 해당 줄의 커서 위치를 기준으로 바로 다음에 오는 a 위치를 찾아 커서를 이동시킨다./ 에 이어 검색할 텍스트를 입력하면 파일에서 단어, 문장으로 검색된 위치로 커서를 이동시킨다.n 명령어를 사용시 이전 검색어로 검색을 반복한다.:%s/Line/line/g : 파일 전체에서 Line 을 line 으로 치환한다.
vi 는 ex 명령어를 사용해서 해당 줄이나 파일 전체에서 검색할 내용을 찾아 바꾸기 작업을 수행할 수 있다.
: : 콜론 문자는 ex 명령어 ( q 종료, w 저장, i 취소 등... )를 실행한다.
% : 작업을 수행할 범위를 보여준다. % 기호는 첫 번째 줄에서 마지막 줄까지라는 의미다. 줄 범위를 지정하지 않으면 현재 라인에만 작업이 수행된다.
:3,8s/TEST/test/g
s : 작업을 지정한다. 이 경우 치환 작업이다.
g : 전체를 의미한다. g 를 사용하지 않으면 각 줄마다 첫 번째 검색 문자열만 변경된다.
:%s/TEST/CHANGE/gc : 마지막에 c 를 붙이면 각 검색마다 replace with CHANGE (y/n/a/q/1/^E/^Y) 가 나타나며 해당 텍스트로 변환할 것인지 물어본다.
| 키 | 실행 |
|---|---|
| y | 예, 교체 |
| n | 아니오, 교체하지 않음 |
| a | 모두, 추가 확인 없이 모든 발생을 교체 |
| q | 종료, 이 발생 또는 이후 발생을 교체하지 않음 |
| ESC | 취소, 이 발생을 교체하지 않음 |
| l | 이 발생을 교체하고 멈춤 |
| ctrl-E | 한 줄 아래로 스크롤하고 더 많은 내용을 표시 |
| ctrl-Y | 한 줄 위로 스크롤하고 더 많은 내용을 표시 |