다시 시작하는 리눅스 #8 텍스트 에디터 Vim

최동민·2022년 12월 28일
0

Linux

목록 보기
17/25

리눅스를 다루다 보면 텍스트 파일을 자주 편집하게 된다. 애플리케이션의 설정 파일을 편집하거나 스크립트 코드를 수정하는 일이 흔하기 때문이다.

파일은 내용에 따라 텍스트 파일과 바이너리 파일로 나뉜다.
텍스트 파일은 이름 그대로 텍스트(문자열)가 적혀진 파일을 말한다. 예를 들어 작성한 메모, 프로그램 코드, HTML 파일 등이 텍스트 파일에 해당된다. cat less 를 통해 텍스트 파일의 내용을 확인하는 것이 가능하다.
바이너리 파일은 이미지나 음성 파일, 리눅스 명령어 파일 (예를 들어 cat 명령어의 경우 /bin/cat을 말한다) 이들은 텍스트로 쓰인 것이 아니라서 사람이 직접 읽을 수는 없다.

리눅스에서는 설정 파일이나 스크립트 등 많은 부분에서 텍스트 파일이 사용된다. 예를 들어 지금까지 사용한 배시나 웹 서버로 많이 사용되는 아파치의 설정 파일 등이 텍스트 파일이다. 이러한 텍스트 파일은 바이너리 파일에는 없는 다음과 같은 특징이 있다.

  • 전용 애플리케이션을 사용하지 않아도 내용을 쉽게 확인할 수 있다.
  • 호환성이 높아 많은 애플리케이션에서 사용할 수 있다.
  • 텍스트 파일을 다루는 수많은 리눅스 명령어를 활용할 수 있다.

Vim

설치

텍스트 파일을 편집할 때 텍스트 에디터를 사용한다.
리눅스에서 사용할 수 있는 에디터는 다양하지만, 리눅스의 표준 에디터라 할 수 있는 Vim에 대해 알아본다.
설치 여부를 확인한다. 설치가 안되어 있다면 apt-get install vim

실행, 저장, 종료

vim 혹은vi라 입력하면 에디터가 실행된다.

:q을 누르면 종료된다.

Vim에는 명령어를 입력하는 모드와 텍스트를 입력하는 모드가 있다. 텍스트를 입력하는 모드에서는 명령어를 입력해도 그저 텍스트로 입력되어서 원하는 기능을 수행할 수 없다.
vim <파일 이름>과 같은 형식으로 입력하면 해당 파일을 열 수 있으며, 존재하지 않는 파일 이름이라면 해당 이름으로 파일이 새로 만들어진다.

새로운 파일이 만들어지면 아무런 내용이 없기 때문에 각 행에 틸드가 표시된다.

편집 중인 파일을 저장하기 위해서 :w 명령어를 사용한다.
(:w newfile_name 별도의 파일 이름을 지정하면 해당 파일 이름으로 지정됨)
파일을 편집하고 저장하지 않고 종료를 원할 때에는 :q!를 사용한다.

커서 이동

h : 왼쪽으로 이동
j : 아래로 이동
k : 위로 이동
l : 오른쪽으로 이동

w를 사용하면 다음 단어의 첫 글자로 이동할 수 있다.
이와 반대로 이동하려면 b를 입력.
공백을 기준으로 다음 단어의 첫 글자로 이동하려면 W
마찬가지로 반대 이동은 B를 입력.

0을 누르면 행의 시작으로 이동.
$을 누르면 행의 끝으로 이동.

큰 파일을 다룰 때는 행 번호로 바로 이동할 수 있다면 편리하겠다.
<행 번호>G를 입력하면 지정한 행으로 이동한다.
예를 들어 5G를 입력하면 파일의 5번째 행으로 이동한다.

파일의 처음으로 이동할 때는 gg
파일의 마지막으로 이동할 때는 G

문자 입력과 삭제

Vim에서는 기본적으로 문자가 명령어로 해석되어 텍스트에 입력되지 않는다.
문자를 입력하려면 i를 입력한다. 종료는 Esc
(커서의 오른쪽에 문자를 입력하고 싶은 경우에는 a 사용)
이처럼 Vim에는 명령어를 입력할 수 있는 보통 모드(normal mode), 텍스트를 입력할 수 있는 입력 모드(insert mode)가 있다.

문자 삭제는 지우고 싶은 문자 위에서 x를 입력.

자르기, 복사하기, 붙여넣기

일반적인 에디터에서의 명칭 		Vim에서의 호칭
자르기(cut) :					삭제(delete)
복사							복사(yank)
붙여넣기						붙여넣기(put)

삭제

x를 누르거나 d명령어를 사용한다.
d명령어는 입력 후 커서를 이동하여 지울 범위를 지정할 수 있다.

d$ : 현재 행의 위치에서 마지막까지 삭제
d0 : 현재 행의 위치에서 시작까지 삭제
x, dl : 문자 한 개 삭제
dw : 단어 한 개 삭제
dgg : 현재 위치에서 문서 시작까지 삭제
dG : 현재 위치에서 문서 끝까지 삭제

붙여넣기

d로 지운 텍스트는 p로 원하는 곳에 붙여넣을 수 있다.

복사

지우지 않고 복사만 하고 싶은 경우에는 d 대신에 y를 사용한다.
y도 복사 범위를 지정할 수 있다.

yy : 현재 커서가 있는 행을 복사
dd : 현재 커서가 있는 행을 삭제

다음 행과 연결하고 싶은 경우

문자를 지우는 x 명령어로는 행의 끝에 있는 개행문자를 지울 수 없어 두 행을 한 행으로 하는 것과 같은 조작이 어렵다. 이때 J 명령어를 사용하면 현재 행과 다음 행이 한 행이 된다.

취소와 재실행

직전에 실행한 조작을 취소하기 위해서는 u를 입력한다. undo의 약자로 실수로 잘못 지웠을 때 사용한다.
한편 취소한 동작에 대해 다시 실행하고 싶은 경우에는 Ctrl + r 을 입력한다. redo의 약자이다.

검색과 치환

파일 내의 문자열을 검색하기 위해서는 /<문자열 입력>Enter를 누른다.
발견된 문자열의 위치로 커서가 이동한다.
검색 결과가 여러 개인 경우 n을 누를 때마다 다음 검색 결과로 이동하며, N을 누르면 이전 검색 결과로 이동한다.
그리고 ?<문자열 입력> 은 역방향으로 검색한다.

텍스트 파일 내의 특정 문자열을 다른 문자열로 치환하는 방법은 다음과 같다.
%s/<검색할 문자열>/<치환할 문자열>/g

:%s/-/?/g 를 실행해보면 - 가 ? 로 치환되었다.

도움말과 공식 문서

vimtutor라는 명령어를 입력하면 튜토리얼이 시작된다.

여기서 :help를 입력하면 화면이 상하로 나뉘어지며 위쪽에 도움말이 표시된다.
도움말 중에는 다른 항목에 대한 링크도 포함되어 있으며, 링크로 넘어가기 위해서는 커서를 해당 위치로 이동한 뒤 Ctrl + ]를 입력한다.
링크를 넘어가기 전으로 돌아가기 위해서는 Ctrl + t를 입력한다.
:help <명령어>는 해당 명령어에 대한 도움말을 확인시켜준다.

profile
코드를 두드리면 문이 열린다

0개의 댓글