본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

안녕하세요! 리눅스 명령어 세계를 탐험 중인 Big Byte입니다! 🚀 활기찬 화요일, 다들 잘 보내고 계신가요?
지난 시간에는 데이터의 흐름을 자유자재로 바꾸는 I/O 리다이렉션(>, >>, <, 2>, &>)과 파이프(|)의 마법을 배웠죠! 🌊
마치 수로를 만들어 물길을 원하는 곳으로 보내고, 여러 파이프를 연결해 복잡한 작업을 한 번에 처리하는 것 같았습니다. cat, tee, head/tail, wc, sort, uniq 같은 유용한 명령어 친구들과 함께라면 이제 데이터 흐름을 제어하는 건 문제없어요! 😎
데이터 스트림을 다루는 법을 익혔으니, 이제는 파일 속 데이터 자체를 직접 편집하는 강력한 도구를 배울 시간입니다! 리눅스 환경에서 거의 모든 시스템에 기본적으로 설치되어 있는 전설적인 편집기, 바로 vi (혹은 요즘은 개선판인 Vim)입니다! 📝 처음에는 조금 낯설 수 있지만, 익숙해지면 정말 빛의 속도로 텍스트 편집이 가능해지는 마법의 도구랍니다! ✨
그럼 오늘 vi와 함께 텍스트 편집의 신세계로 떠나볼까요? Let's edit! ⌨️

1. 리눅스의 터줏대감, 텍스트 편집기 vi 만나보기 🤝
vi는 리눅스(및 유닉스) 환경에서 가장 기본적이고 강력한 텍스트 편집기 중 하나입니다. GUI 환경의 메모장이나 워드프로세서와는 조금 다른, 모드(mode) 기반의 편집 방식이 특징인데요. 처음엔 이게 좀 어색할 수 있어요! 😂 크게 세 가지 모드를 기억하면 좋습니다.
- 명령 모드 (Normal Mode / Command Mode): vi를 처음 실행하거나 Esc 키를 눌렀을 때의 기본 상태. 텍스트 입력은 안 되지만, 커서 이동, 삭제, 복사, 붙여넣기 등 다양한 편집 '명령'을 내리는 모드입니다. 여기가 vi의 관제탑 같은 곳이죠! 👨✈️
- 입력 모드 (Insert Mode): 실제로 텍스트를 키보드로 입력하는 모드입니다. 명령 모드에서 i, a, o 등의 키를 누르면 진입합니다. 우리가 아는 일반적인 텍스트 편집기처럼 글자를 쓸 수 있어요. ✍️
- 마지막 행 모드 (Command-line Mode / Ex Mode): 명령 모드에서 :(콜론) 키를 누르면 화면 맨 아래 줄에 ':'가 나타나면서 진입합니다. 파일 저장(:w), 종료(:q), 검색(/), 치환(:%s/old/new/g) 등 강력한 기능들을 실행하는 모드입니다. 🚀
처음에는 이 모드 전환이 헷갈리지만, Esc 키를 누르면 언제든 안전한(?) 명령 모드로 돌아온다는 것만 기억하면 길을 잃지 않을 수 있습니다!

2. vi 안에서 자유롭게 날아다니기! 🚀 (이동하기 - 명령 모드)
vi의 진가는 마우스 없이 키보드만으로 파일 안을 자유롭게 탐색할 수 있다는 점이죠! 명령 모드에서 사용하는 주요 이동 키들을 알아봅시다.
- 기본 상하좌우 이동:
- h: 왼쪽으로 한 칸 (←)
- j: 아래쪽으로 한 줄 (↓)
- k: 위쪽으로 한 줄 (↑)
- l: 오른쪽으로 한 칸 (→)
- Tip: 방향키도 보통 작동하지만, hjkl 키는 오른손을 홈 키(키보드 기본 위치)에 그대로 둔 채 이동할 수 있어 숙련자들은 이걸 훨씬 선호합니다! 💪
- 단어 단위 이동:
- w: 다음 단어의 시작으로 이동 (Word)
- b: 이전 단어의 시작으로 이동 (Backward)
- e: 현재/다음 단어의 끝으로 이동 (End)
- 줄 단위 이동:
- 0 (숫자 0): 현재 줄의 가장 처음으로 이동
- ^: 현재 줄의 첫 번째 비공백 문자로 이동 (행 시작 부분의 공백 무시)
- $: 현재 줄의 가장 끝으로 이동
- 화면/파일 단위 이동:
- gg: 파일의 가장 첫 줄로 이동
- G: 파일의 가장 마지막 줄로 이동
- Ctrl + f: 한 화면 아래로 이동 (Forward)
- Ctrl + b: 한 화면 위로 이동 (Backward)
- H: 현재 화면의 맨 위 줄로 이동 (High)
- M: 현재 화면의 중간 줄로 이동 (Middle)
- L: 현재 화면의 맨 아래 줄로 이동 (Low)
와! 정말 다양하죠? 처음엔 많아 보이지만, 자주 쓰는 몇 가지만 손에 익으면 텍스트 파일 안을 정말 빠르게 누빌 수 있게 됩니다! 휙휙~ 💨
3. 텍스트를 내 마음대로 조각하기! ✍️ (편집하기 - 명령/입력 모드)
이제 실제로 텍스트를 추가하고, 지우고, 바꾸는 방법을 알아볼 차례입니다! 편집은 주로 명령 모드에서 명령을 내리거나, 입력 모드로 전환하여 이루어집니다.
- 입력 모드 진입:
- i: 커서 앞(왼쪽)부터 입력 시작 (Insert)
- a: 커서 뒤(오른쪽)부터 입력 시작 (Append)
- o: 현재 줄 아래에 새 빈 줄을 만들고 입력 시작 (Open below)
- O: 현재 줄 위에 새 빈 줄을 만들고 입력 시작 (Open above)
- 입력 모드에서 명령 모드로 돌아가려면? 👉 Esc 키! (가장 중요!)
- 삭제하기 (명령 모드):
- x: 커서 위치의 글자 하나 삭제 (딜리트 키 느낌)
- dw: 커서 위치부터 단어 하나 삭제 (Delete Word)
- dd: 현재 줄 전체 삭제 (Delete Line)
- D 또는 d$: 커서 위치부터 줄 끝까지 삭제
- Tip: 숫자와 조합 가능! 3dd는 3줄 삭제, 5dw는 5단어 삭제! 🔢
- 변경하기 (명령 모드 -> 입력 모드):
- cw: 커서 위치부터 단어 끝까지 지우고 입력 모드로 변경 (Change Word)
- cc: 현재 줄 전체 내용을 지우고 입력 모드로 변경 (Change Line)
- C 또는 c$: 커서 위치부터 줄 끝까지 지우고 입력 모드로 변경
- r: 커서 위치의 글자 하나만 다른 글자로 변경 (Replace - 입력 모드 진입 X)
- s: 커서 위치의 글자 하나를 지우고 입력 모드로 변경 (Substitute)
- 복사(Yank) & 붙여넣기(Put) (명령 모드):
- yy: 현재 줄 전체 복사 (Yank Line)
- yw: 커서 위치부터 단어 하나 복사 (Yank Word)
- p: 복사(yank)하거나 삭제(delete)한 내용을 커서 다음에 붙여넣기 (Put)
- P: 복사(yank)하거나 삭제(delete)한 내용을 커서 이전에 붙여넣기
- Tip: dd로 삭제한 내용도 버퍼에 저장되므로 p로 붙여넣으면 잘라내기(Cut)처럼 쓸 수 있어요!
- 실행 취소 / 재실행 (명령 모드):
- u: 방금 실행한 명령 취소 (Undo) - 여러 번 누르면 계속 이전 단계로!
- Ctrl + r: 취소했던 명령 재실행 (Redo)
4. 작업 완료! 저장하고 나가기 👋 (마지막 행 모드)
열심히 편집했으면 이제 저장하고 나가야겠죠? 명령 모드에서 :를 눌러 마지막 행 모드로 들어간 후 다음 명령어를 사용합니다.
- :w: 현재 파일 저장 (Write)
- :w new_filename.txt: 다른 이름으로 저장 (Write to new file)
- :q: 편집기 종료 (Quit - 변경사항 없거나 저장했을 때만 가능)
- :q!: 변경사항 무시하고 강제 종료 (Quit Force - 주의! ⚠️)
- :wq 또는 :x 또는 ZZ (명령 모드에서): 저장하고 종료 (Write & Quit)
휴! vi의 기본 이동과 편집 기능들을 쭉 훑어봤습니다! 🤯 처음엔 모드 전환과 생소한 명령어들 때문에 어렵게 느껴질 수 있지만, 조금씩 손에 익으면 마우스 없이 키보드만으로 정말 효율적인 텍스트 편집이 가능해집니다. 리눅스 서버 환경에서는 GUI가 없는 경우가 많으니, vi는 정말 필수 스킬이라고 할 수 있어요!
단순히 파일을 보는 것을 넘어, 이제 리눅스 시스템의 설정 파일을 수정하거나 간단한 스크립트를 작성하는 등 더 많은 작업을 할 수 있는 문이 열린 기분입니다! 😊 vi와 함께라면 두려울 것이 없다! (조금 과장 ㅎㅎ)

벌써 한 주의 중간을 향해 달려가는 화요일 저녁이네요!
오늘 하루도 각자의 자리에서 열심히 달리신 모든 분들, 정말 수고 많으셨습니다! 💪🔥
편안한 저녁 보내시고, 내일 또 새로운 마음으로 만나요! 😊
'데이터 엔지니어링' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 17일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.17 |
|---|---|
| 패스트캠퍼스 환급챌린지 16일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.16 |
| 패스트캠퍼스 환급챌린지 14일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.14 |
| 패스트캠퍼스 환급챌린지 13일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.13 |
| 패스트캠퍼스 환급챌린지 12일차: 데이터엔지니어링 초격차 강의 후기 (0) | 2025.04.12 |