cmod.ify
Vim 편집기 및 단축키 본문
728x90
반응형
1. 리눅스 편집기의 종류
리눅스 환경에서 사용하는 편집기는 작동 방식에 따라 크게 세 가지로 나뉜다.
- 행 단위 편집기: 한 번에 한 줄씩 편집하는 도구 (예: ed, ex, sed)
- 화면 단위 편집기: 터미널 화면 전체를 사용하며 편집 (예: vi, vim)
- GUI 편집기: 윈도우 메모장처럼 그래픽 환경에서 사용 (예: gedit)
2. 모드형 vs 비모드형 편집기
가장 대표적인 편집기인 Vim과 Nano의 차이점을 이해하는 것이 중요하다.
| 구분 | 모드형 편집기 (Vim) | 비모드형 편집기 (Nano) |
| 특징 | 입력 모드와 명령 모드가 엄격히 구분됨 | 입력과 명령 구분이 없음 (메모장 방식) |
| 장점 | 숙련 시 키보드만으로 초고속 편집 가능 | 직관적이고 배우기 쉬움 |
| 단점 | 초기 학습 곡선이 높음 | 복잡한 편집 작업 시 효율이 떨어짐 |
| 조작 | i, esc, : 등의 키로 모드 전환 | Ctrl이나 Alt와 같은 특수 키 조합 사용 |
3. Vim(Vim Improved) 시작하기
Vim은 기존 vi의 기능을 확장하여 현재 가장 일반적으로 사용되는 텍스트 편집기다.
설치 및 실행
- 설치: sudo apt install vim
- 시작: vim [파일경로]
- 파일이 있으면 편집 모드, 없으면 새 파일이 생성된다.
- 경로 생략 시 Vim 도움말이 출력된다.
- 권한이 없으면 [읽기 전용]으로 열리니 주의하자.
동작 모드 전환
- 명령 모드 (기본): 시작 시 상태. 수정, 삭제, 복사 등을 수행한다.
- 입력 모드: 글자를 입력하는 상태. (i, a, o, A, O 입력 시 전환)
- 마지막 행 모드: 저장 및 종료를 수행하는 상태. (:, /, ? 입력 시 전환)
- 복귀: 어떤 모드에서든 ESC를 누르면 명령 모드로 돌아온다.
저장 및 종료
| 명령어 | 모드 | 기능 설명 |
| ZZ | 명령 모드 | 저장 후 즉시 종료 |
| :wq | 마지막 행 | 저장 후 종료 (변경사항 적용) |
| :q | 마지막 행 | 저장하지 않고 종료 |
| :q! | 마지막 행 | 강제 종료 (변경사항 무시) |
4. 실습: 파일 만들기 및 입력 모드 차이
vim test.txt 명령어로 파일을 열고 내용을 입력해 보자. 입력 모드로 전환할 때 사용하는 키에 따라 커서 위치가 달라진다.
- i (insert): 현재 커서 앞에서 입력 시작
- a (append): 현재 커서 뒤에서 입력 시작
- o (open line): 현재 줄 다음 행에 새 줄을 만들고 입력 시작
5. 커서 이동 명령어 총정리
Vim의 진가는 명령 모드에서의 빠른 이동에 있다.
기본 및 문서 이동
| 분류 | 명령어 | 기능 설명 | 비유 및 팁 |
| 기본 방향 | h | 왼쪽 (\leftarrow) 이동 | 검지 위치 |
| j | 아래 (\downarrow) 이동 | 아래로 뚝 떨어지는 느낌 | |
| k | 위 (\uparrow) 이동 | 위로 솟은 모양 | |
| l | 오른쪽 (\rightarrow) 이동 | 오른쪽 끝 위치 | |
| 단어 단위 | w | 다음 단어의 첫 글자로 이동 | word (다음 단어) |
| b | 이전 단어의 첫 글자로 이동 | back (이전 단어) | |
| e | 현재/다음 단어의 끝 글자로 이동 | end (단어 끝) | |
| 줄 내부 | 0 | 줄의 맨 앞으로 이동 | 숫자 0 (시작점) |
| $ | 줄의 맨 뒤로 이동 | 문장의 끝(종착역) | |
| ^ | 줄의 첫 번째 문자로 이동 | 공백 제외 첫 글자 | |
| 문서 전체 | gg | 문서의 맨 첫 줄로 이동 | Go Go (처음으로) |
| G | 문서의 맨 마지막 줄로 이동 | 끝판왕 (마지막으로) | |
| [숫자]G | [숫자] 번째 행으로 이동 | 특정 줄로 점프 | |
| 페이지 | Ctrl + f | 다음 페이지로 이동 | forward |
| Ctrl + b | 이전 페이지로 이동 | backward | |
| Ctrl + d | 반 페이지 아래로 이동 | down | |
| Ctrl + u | 반 페이지 위로 이동 | up | |
| 화면 기준 | H | 현재 화면의 맨 윗줄로 이동 | High |
| M | 현재 화면의 중간 줄로 이동 | Middle | |
| L | 현재 화면의 맨 아랫줄로 이동 | Low | |
| 기타 | % | 괄호((), {}, [])의 짝으로 이동 | 코딩 시 짝 찾기 필수 |
화면 및 페이지 스크롤 (^는 Ctrl 키)
| 분류 | 명령어 | 기능 설명 | 비유 |
| 반 화면 | ^u / ^d | 반 화면 위로 / 아래로 이동 | Up / Down |
| 한 화면 | ^b / ^f | 이전 페이지 / 다음 페이지 이동 | Backward / Forward |
| 줄 스크롤 | ^y / ^e | 커서 고정, 화면만 한 줄 위 / 아래 이동 | 미세 스크롤 |
| 화면 기준 | H / M / L | 화면 내 맨 위 / 중간 / 맨 아래 이동 | High / Mid / Low |
| 기타 | % | 괄호 짝 찾기 | 코딩 필수 키 |
글 작성 및 편집
| 분류 | 명령어 | 기능 설명 |
| 이동 | 행번호G | 지정한 행 번호로 바로 이동 (예: 10G) |
| :행번호 | (명령행 모드) 지정한 행으로 이동 | |
| 삭제 | x | 현재 커서 위치의 글자 1개 삭제 |
| #x | 현재 커서부터 #개의 글자 삭제 | |
| dw | 현재 커서 위치의 단어 삭제 | |
| #dw | 현재 커서부터 #개의 단어 삭제 | |
| dd | 현재 커서가 있는 행 삭제 (잘라내기) | |
| #dd | 현재 커서부터 #개의 행 삭제 | |
| D | 커서 위치부터 행의 끝까지 삭제 | |
| 취소 | u | 이전 명령 취소 (Undo) |
| U | 해당 행에서 한 모든 명령 취소 | |
| :e! | 마지막 저장 이후의 변경사항 모두 버리고 새로 시작 | |
| 복사/붙여넣기 | yy | 커서가 있는 행 복사 |
| #yy | 커서부터 #개의 행 복사 | |
| p (소문자) | 커서 아래쪽에 붙여넣기 | |
| P (대문자) | 커서 위쪽에 붙여넣기 |
검색 및 탐색
| 기능 | 명령어 | 설명 |
| 아래 방향 검색 | /문자열 | 현재 커서 아래로 검색 |
| 위 방향 검색 | ?문자열 | 현재 커서 위로 검색 |
| 정방향 다음 | n | 원래 찾던 방향으로 다음 단어 찾음 |
| 역방향 다음 | N | 반대 방향으로 다음 단어 찾음 |
| 행 번호 출력 | Ctrl + G | 현재 행 번호와 파일 정보를 하단에 띄움 |
치환
| 범위 | 명령어 | 설명 |
| 현재 행 (1개) | :s/A/B | 현재 줄의 첫 번째 A를 B로 바꿈 |
| 현재 행 (전체) | :s/A/B/g | 현재 줄의 모든 A를 B로 바꿈 |
| 파일 전체 | :%s/A/B/g | 파일 전체의 모든 A를 B로 바꿈 |
| 치환 전 확인 | :%s/A/B/gc | 바꿀 때마다 물어보고 바꿈 |
| 전체 소문자로 | :%s/.*/\\L&/g | 파일 내 모든 대문자를 소문자로 변환 |
| 전체 대문자로 | :%s/.*/\\U&/g | 파일 내 모든 소문자를 대문자로 변환 |
| set ignorecase | 대소문자 구분하지 않고 변경 |
파일 관리 및 셸(Shell) 연동
| 기능 | 명령어 | 설명 |
| 파일 읽어오기 | :r [파일경로] | 지정한 파일을 커서 위치에 슥 집어넣음 |
| 다른 파일 열기 | :e [파일명] | 현재 파일 닫고 새 파일로 전환 (저장 필수) |
| 다음 파일 이동 | :n | vim a.txt b.txt 처럼 열었을 때 다음 파일로 감 |
| 셸 명령 실행 | :![명령어] | Vi 잠시 멈추고 셸 명령 실행 (Enter 치면 복귀) |
| 셸로 나가기 | :sh | 잠시 셸로 나감 (돌아올 땐 exit 입력) |
환경 설정 (set 옵션)
| 옵션 명 | 설명 | 반대 옵션 |
| set nu | 줄 번호를 보여줌 | set nonu |
| set ic | 검색 시 대소문자 구분 안 함 | set noic |
| set list | 탭(^I), 줄바꿈($) 등 숨은 문자 표시 | set nolist |
| set showmode | 하단에 현재 모드(INSERT 등) 표시 | set noshowmode |
| set set | 현재 설정된 모든 옵션 값 확인 | - |
| set all | 모든 환경 설정 변수와 현재 값 출력 | - |
기타 팁 (Vim 전용)
- Shift + j: 현재 줄이랑 바로 아래 줄을 한 줄로 합쳐버림.
- . (마침표): 방금 했던 편집 명령 그대로 다시 실행함 (반복 작업 시 사).
- Ctrl + l: 화면 밀리거나 깨졌을 때 새로고침함.
728x90
반응형
'BASIC > LINUX' 카테고리의 다른 글
| [LINUX] FILE SYSTEM (0) | 2026.01.08 |
|---|---|
| Shell (0) | 2026.01.07 |
| 리눅스 쉘(Shell) 기본 명령어 (0) | 2026.01.06 |
| OpenSSH 서버 설치 및 가상머신 포트 포워딩 설정 (0) | 2026.01.06 |
| 리눅스 개요 및 설치 (0) | 2026.01.06 |