0. 리눅스의 텍스트 에디터에 대해서
리눅스에서는 설정 파일 등 많은 파일에서 텍스트 파일이 이용된다. 예를들어 맥에서 java 환경변수를 설정할 때도 필요하며, apache(아파치)의 설정 파일, 배시(bash) 설정 파일 등이 있다. 이 때문에 리눅스를 이용한다면 텍스트 편집기를 이용할 수 있어야 한다.
윈도우에는 메모장이 있고, macOS 에는 텍스트 편집기가 있듯이 리눅스에도 텍스트 에디터가 존재한다. 여러 종류가 있지만 대부분의 리눅스 배포판에 기본으로 설치되어 있어 실질적인 리눅스 표준 에디터라 보는 Vim이 있다. 참고로 이외에도 Emacs 라는 텍스트 에디터도 존재한다.
Vim 은 GUI로 직관적으로 사용할 수 있는 윈도우의 메모장이나 맥OS의 텍스트 편집기와는 달라서 특별한 조작법을 익혀야 한다.
1. Vim 설치
Vim 이 설치되어 있는지 확인하기 위해서는 그 버전을 확인해보는 다음의 명령어를 실행해보면 알 수 있다. 버전이 출력된다면 설치되어 있는것이고, 설치되어 있지않다면 에러메시지가 출력될 것이다.
$ vim --version
만약, 설치되어 있지 않다면 다음의 명령어를 실행하면 설치할 수 있다.
• 우분투에서의 Vim 설치 명령어
$ sudo apt-get install vim
참고로 CentOS 의 경우 다음의 명령어를 이용한다.
$ yum install vim
2. vim 실행, 종료
(1) vim 실행
■ vim 실행
$ vim
또는
$ vi
vim은 vi 를 뒤이어 개발된 텍스트 에디터이다. 그래서 vim 이 아니라 vi 라고 입력해도 호환성을 고려하여 Vim이 기동된다.
(2) vim 종료
■ vim 종료
:q <Enter>
아래의 화면에서도 알 수 있듯, :q 를 입력하고 <엔터>를 입력하면 종료 (to exit)된다.
3. 파일 열기와 저장
(1) 파일 열기
■ vi 편집기로 파일 열기
$ vi [파일명]
$ vim [파일명]
파일 여는 명령어 vi 와 vim 는 동일하므로 어떤 것을 사용해도 무방하다.
테스트로 빈 텍스트 파일 (testTextFile.txt) 을 하나 생성하여 vi 편집기로 실행해보자.
그럼 다음과 같이 0B의 빈 파일이 열린다.
(2) 【주의】 vim 의 텍스트 입력 모드, 명령어 입력 모드
파일 열어 텍스트를 편집할때 주의사항이 있다. vim 에디터에는 입력모드가 2가지 존재하는데 구분하여 사용해야한다.
■ 텍스트 입력모드 (-- INSERT --)
키보드의 i 를 누르면 텍스트 입력모드가 된다. 그럼 다음과 같이 가장 하단이 -- INSERT -- 로 변하는 것을 확인할 수 있다.
이 상태에서 텍스트를 입력하면 입력된다. 명령어를 입력해도 텍스트로 인식된다.
입력모드에서 다음의 종료 명령어를 입력해보자.
• vi 편집기 종료 명령어
:q <Enter>
그럼 다음과 같이 텍스트로 :q 가 입력되고, <엔터>로 인해 커서가 아래로 이동된다. 종료 명령어가 단순히 텍스트로 입력되는 것이다.
■ 명령어 입력 모드
텍스트 입력모드에서 키보드의 ESC 를 누르면 텍스트 입력모드가 종료되고 명령어 입력 모드로 전환된다. 명령어 입력모드에서 종료명령어를 입력해야만 vim 편집기가 종료된다.
명령어 입력모드로 전환하고 저장하지 않고 종료 명령어(:q!)를 입력해보자. 명령어모드로 전환하면 가장 하단에 -- INSERT -- 가 사라지며, 명령어를 입력하면 가장 하단에 입력된다. 이상태에서 엔터를 입력하면 종료 명령어가 실행되며 vi 편집기가 종료된다.
① 저장하지 않고 종료 명령어 (:q!) 입력 후 엔터
② 저장하지 않고 종료된 모습
(3) 파일 종료, 저장 명령어
■ vim 종료 및 저장 명령어
명령어 | 내용 |
:q | vim 종료 |
:q! | 저장하지 않고 vim 종료 |
:w | 저장 |
:w <파일이름> | 파일이름을 지정하여 저장 |
:wq | 저장 후 vim 종료 |
■ 파일을 수정한 후, :q 로 vi 편집기를 종료하려고 하면 에러가 발생한다.
→ 에러메시지 [ E37: No write since last change (add ! to override) ] 의 원인
① 파일에 데이터를 입력(수정) 하여 명령어모드로 전환한 후 단순 종료 명령어 :q 를 입력해보자
② 다음과 같이 파일을 편집한후 저장하지 않고 종료하면 다음과 같이 에러가 발생한다.
E37: No write since last change (add ! to override)
E37: 마지막으로 변경 뒤 저장되지 않았습니다. (무시하려면 ! 더하기)
③ 이때, 저장하려면 :w 를 입력하고 종료해야하며, 무시하고 저장하지 않고 종료하려면 느낌표를더해 :q! 를 입력하면 된다.
- 저장후 종료를 원하는 경우 :wq 입력
- 참고로 저장 명령어 :w 를 실행한 후, 종료명령어 :q 로 종료하는 것과 같다.
- 저장하지 않고 종료를 원할 경우 :q! 입력
4. 문자열 검색과 치환
(1) 문자열 검색
■ 문자열 검색 명령어 (명령어 이므로 명령어 입력모드에서 입력해야한다.)
명령어 | 내용 |
/<문자열> | 아래 방향으로 <문자열>검색 |
?<문자열> | 위 방향으로 <문자열>검색 |
n | 다음 검색 결과로 이동 |
N | 이전 검색 결과로 이동 |
예제로 확인해보자. 다음과 같은 텍스트 파일이 존재한다고 할때 현재 커서 위치는 빨간색 부분으로 문자의 사이에 위치한다.
① 명령어 입력 모드에서 /data 를 입력해보자. 커서가 있던 위치에서 아래방향으로 data 가 검색된다.
② 명령어 입력 모드에서 ?data 를 입력해보자. 반대로 커서의 위 방향으로 data 가 검색된다.
(2) 문자열 치환
■ 문자열 치환 명령어 (명령어 이므로 명령어 입력모드에서 입력해야한다.)
:%s/<검색할 문자열>/<치환할 문자열>/g
예제로 확인해보자. lalala 를 replace 로 변환해보려 한다. 명령어 입력모드에서 :%s/lalala/replace 를 입력하고 엔터를 치면된다.
변환되어 다음과 같이 lalala 가 replace 로 치환된 것을 확인 할 수 있다.