[Linux] 편집기 - vim, nano

JIWON·2025년 5월 15일

Linux

목록 보기
4/20
post-thumbnail

📝 편집기 종류

1. 리눅스 편집기 종류

  • 행 단위 편집기
    한 줄 단위로 화면에서 입력 : ed, ex, sed

  • 화면단위 편집기
    화면단위로 입출력 : vi(최근엔 vim), emacs, nano(메뉴 기반 에디터) 등

  • GUI 편집기
    : gedit


2. 모드형과 비모드형 편집기

🔸모드형

  • 입력 모드명령 모드가 구분
  • 입력 모드는 텍스트를 입력하거나 수정을 할 수 있는 모드
  • 명령 모드저장이나 종료 등을 하는 모드
  • 같은 글자라도 입력 모드에서는 텍스트로 처리하여 입력되고, 명령 모드에서는 편집 명령어로 사용
  • vi는 모드형 편집기

🔸 비모드형

  • 입력 모드와 명령 모드가 구분되어 있지 않음
  • 편집 기능을 CTRL 이나 ALT 같은 특수 키와 함께 사용
  • nano는 비모드형 편집기

🖋️ vim

vim : vi 이후에 개발된 Editor

1. vim 설치

sudo apt-get install vim

2. vim 동작모드

  • vi 를 시작하면 명령모드로 진입

  • 명령모드 -> 입력모드 : i , I , a , A , o , O

  • 입력모드 -> 명령모드 : ESC

  • 명령모드에서 저장 및 종료 : ZZ

  • 명령모드 -> 마지막 행 모드 : : , \ , ?

  • 마지막 행 모드 -> 명령모드 : Enter , ESC

  • 마지막 행 모드에서 저장하지 않고 종료 : :q , :q!

  • 마지막 행 모드에서 저장하고 종료 : :wq , :wq!


💠vi 시작

vim 파일경로
  • 해당 파일이 존재하면 파일의 내용이 보이고 존재하지 않는 파일이면 빈 파일이 열림
  • 파일 경로를 생략하면 메시지 창이 보임
  • 수정 권한이 없는 경우에는 읽기 전용으로 열림

💠vi 종료

모드명령키기능
마지막 행 모드:q작업한 것이 없을 때 그냥 종료
:q!작업한 내용을 저장하지 않고 종료
:w [파일명]작업한 내용을 저장만 함. 파일명을 지정하면 새 파일로 저장한다
:wq ,:wq!작업한 내용을 저장하고 vi를 종료한다
명령모드ZZ작업한 내용을 저장하고 vi를 종료한다

💠모드 전환

입력모드 전환

명령키기능
i현재 커서 자리에 입력
a현재 커서 다음자리에 입력
o커서가 위치한 행의 다음 행에 입력
I커서가 위치한 행의 첫 컬럼으로 이동하여 입력
A커서가 위치한 행의 마지막 컬럼으로 이동하여 입력
O커서가 위치한 행의 이전 행에 입력

💠명령모드 - 이동

커서 이동

  • 방향키를 이용해서 커서 이동 가능
  • 키를 이용해서 이동
명령키기능
k한 행 위로 이동
j한 행 아래로 이동
l한 글자 오른쪽으로 이동
h한 글자 왼쪽으로 이동
^ or 0현재 행의 맨 앞으로 이동
$현재 행의 맨 뒤로 이동
-앞 행의 맨 처음으로 이동
+ or Enter다음 행의 처음으로 이동
H or M or L화면의 맨 위/ 중간 / 아래로 이동
w or e다음 단어의 처음 / 마지막으로 이동
b앞 단어의 첫 글자로 이동

화면 이동

명령키기능
CTRL + u반 화면 위로 이동
CTRL + d반 화면 아래로 이동
CTRL + b한 화면 위로 이동
CTRL + f한 화면 아래로 이동
CTRL + y화면을 한 행만 위로 이동
CTRL + e화면을 한 행만 뒤로 이동

특정 행 이동

명령키기능
Shift + g파일의 마지막 행으로 이동
행번호 Shift+g지정한 행 번호로 이동
:행번호지정한 행 번호로 이동
:$마지막 행으로 이동

💠명령모드 - 수정

내용 수정

명령키기능
r커서가 위치한 글자를 다른 글자로 수정
cw, #cw커서 위치부터 현재 단어의 끝까지 수정하는데 #자리에 숫자를 지정하면 수정할 단어의 수가 된다
s, #s커서 위치부터 esc를 누를 때 까지 수정하는데 #에는 수정할 글자 수를 설정
cc커서가 위치한 행의 내용을 모두 수정
C커서 위치부터 행의 끝까지 수정한다

내용 삭제

명령키기능
x, #x커서 위치의 글자를 삭제, #에 삭제할 글자 수 지정
dw, #dw커서 위치의 단어 삭제, #에 삭제할 단어 수 지정
dd, #dd커서 위치의 행 삭제, #에 삭제할 행 수 지정
Shift + d커서 위치부터 행의 끝까지 삭제

명령 취소

명령키기능
u명령을 취소
U해당 행에서 한 모든 명령을 취소
:e!마지막으로 저장한 이후의 것을 모두 버리고 새로 작업

편집 - 복사, 붙여넣기, 잘라내기

명령키기능
yy, #yy커서가 위치한 행을 복사, #은 복사할 행의 수 지정
p커서가 위치한 행의 아래쪽에 붙여넣기
P커서가 위치한 행의 위쪽에 붙여넣기
dd, #dd커서가 위치한 행을 자르기, #은 잘라둘 행의 수 지정

버퍼 : 저장할 수 있는 공간

  • 복사나 잘라내기를 할 때 내용을 버퍼에 저장한다.
    • 이 때 사용하는 버퍼는 언네임드 버퍼라고 한다
    • 하나의 내용만 저장한다
  • 네임드 버퍼는 버퍼에 이름을 붙여서 사용하는 것으로 여러 개의 버퍼를 만들 수 있다
    • 만드는 방법은 "문자나숫자(a,..)복사나잘라내기(yy,dd) 수행
    • 붙여넣기를 할 때는 "버퍼이름+p

실습

1. vi로 새로운 파일인 exec.txt 파일을 생성

vim exec.txt

2. 아래 내용을 입력
i : 입력모드 변환 후 작성

Good morning everyone.
Nice to meet you.
I am a linux beginner.
Now introduce yourself.

3. 파일의 내용 저장
ESC : 명령모드 변환
:w : 파일 내용 저장

4. 마지막 행에 Welcome Linux World 추가
:$ : 마지막 행 이동
i : 입력모드 전환
Welcome Linux World 추가

5. 파일 저장 후 종료
ESC : 명령모드 변환
:wq : 파일 내용 저장 후 종료


3. 유용한 명령

파일 관련

:r 파일 : 파일 경로를 이용하면 파일을 읽어서 현재 커서 위치에 삽입
:e 파일 : 파일 경로를 이용하면 지정한 파일로 전환하는데 기존 파일을 저장한 후 실행해야 함
:n : vi를 시작할 때 여러 파일을 열었다면 다음 파일로 전환

vi에서 셸 명령 사용

:! 셸명령 : vi 작업을 잠시 중단하고 셸 명령을 실행하는데 vi로 돌아오려면 Enter 를 누름
:sh : vi를 잠시 빠져나가서 셸명령을 실행한다. vi로 돌아오려면 exit 명령 입력

기타명령

  • CTRL + l : 현재 화면을 다시 출력
  • CTRL + g : 현재 커서 위치의 행 번호를 마지막 행에 출력
  • Shift + j : 현재 행과 아래 행을 연결해서 한 행으로 만듬
  • . : 바로 직전에 수행했던 명령을 반복
  • ~ : 커서 위치의 글자를 대문자나 소문자로 변경

4. vi 환경설정

  • 사용자 홈 디렉토리에 .exrc 파일로 저장
# vi .exrc

set nu
set list

다른 파일을 열 때 적용되어서 나옴

  • 환경변수 EXRINIT에 지정
EXINIT = 'set nu list'
export EXINIT
  • vi의 마지막 행 모드에서 명령으로 설정할 수 있는데 vi를 종료하면 해제된다

vi 환경 설정 명령

set nu : 행 번호를 표시 ✅
set nonu : 행 번호를 숨김
set list : 눈에 보이지 않는 특수문자를 표시
set nolist : 눈에 보이지 않는 특수문자를 숨김
set showmode : 현재 모드를 표시
set noshowmode : 현재 모드를 숨김
set : vi 환경설정 값을 출력
set all : 모든 환경변수와 현재 값을 출력

0개의 댓글