프로그래밍

리눅스 한 학기 살기 - 7주차

kugorang 2025. 4. 23. 22:25
728x90

들어가며

Ubuntu의 파일들은 Vim으로 들여다보자

이번 7주차의 프로그램은 Vim이다. 사실 이미 1주차 때 설치를 했던 프로그램이지만, 아직까지 기초적인 것만 사용할 줄 아는 초보이기도 하고, 더 친해지고 싶어 이번 주차 때 조사를 해보게 되었다. 개인적으로 나에게는 Vim은 강력하고 어디서나 사용 가능한 텍스트 편집기이다. 긴급한 상황에서 터미널을 켜고 파일 내용을 수정할 때, CLI 환경에서 가장 빛을 발하는 프로그램이 아닐까 싶다. 자, 그럼 Vim에 대해 본격적으로 알아보자.

 

Vim이란 무엇인가?

Vim(Vi IMproved)은 고도로 설정 가능하며 강력한 성능을 자랑하는 텍스트 편집기다. 특히 프로그래밍, 시스템 관리 작업에서 그 효율성으로 널리 알려져 있다. Vim은 유닉스 계열 시스템에서 오랫동안 사용되어 온 vi 편집기에서 파생되었기 때문에, Vim 사용법을 익히는 것은 다양한 컴퓨팅 환경에서 유용하게 활용될 수 있는 기술이다. Ubuntu 24.04 LTS를 포함한 거의 모든 리눅스 배포판과 macOS에서 기본적으로 사용 가능하거나 쉽게 설치할 수 있으며, Windows 환경에서도 사용할 수 있다.

 

핵심 철학: 모드 기반 편집

Vim을 다른 텍스트 편집기(예: Gedit, 메모장, VS Code)와 근본적으로 구별 짓는 가장 큰 특징은 바로 모드(mode) 기반 편집 방식이다. Vim은 사용자가 수행하려는 작업의 종류에 따라 여러 모드를 전환하며 사용한다. 주요 모드는 다음과 같다.

  • 일반 모드 (Normal Mode): Vim을 시작하면 기본적으로 이 모드가 활성화된다. 이 상태에서는 키보드 입력이 텍스트 삽입이 아닌, 커서 이동, 텍스트 삭제, 복사, 붙여넣기 등과 같은 명령어로 인식된다. 사용자는 텍스트를 연속적으로 입력하는 시간을 제외하고는 대부분 일반 모드에서 시간을 보내게 된다. 이 모드의 존재 이유는 기존 텍스트를 탐색하고 수정하는 작업을 최적화하기 위함이다. 프로그래머나 시스템 관리자는 새로운 텍스트를 길게 작성하는 것보다 기존 코드를 읽고, 탐색하고, 작은 부분을 수정하는 데 더 많은 시간을 할애하는 경우가 많다. 일반 모드는 이러한 작업들을 키보드 홈 로우(home row)를 벗어나지 않고도 빠르고 효율적으로 수행할 수 있도록 설계되었다.
  • 입력 모드 (Insert Mode): 일반적인 텍스트 편집기처럼 텍스트를 입력할 수 있는 모드다. 일반 모드에서 i (커서 앞에 삽입), a (커서 뒤에 추가), o (현재 줄 아래에 새 줄을 열고 입력 시작) 등의 명령어를 입력하여 진입한다. 입력 모드에서는 키보드 입력이 화면에 그대로 나타난다.
  • 비주얼 모드 (Visual Mode): 텍스트 블록을 선택하기 위한 모드다. 문자 단위, 줄 단위, 또는 사각형 블록 단위로 텍스트를 선택한 후, 선택된 영역에 대해 삭제, 복사, 변경 등의 명령을 적용할 수 있다.
  • 명령행 모드 (Command-Line Mode): 일반 모드에서 : 키를 누르면 진입한다. 화면 하단에 콜론(:) 프롬프트가 나타나며, 파일 저장 (:w), 종료 (:q), 검색, 바꾸기, 환경 설정 변경 등 다양한 확장 명령을 실행할 수 있다.

 

이러한 모드 전환 방식은 처음에는 다소 생소하고 복잡하게 느껴질 수 있지만, 익숙해지면 마우스 사용 없이 키보드만으로 거의 모든 편집 작업을 매우 빠르고 효율적으로 수행할 수 있게 된다.

 

Vim을 사용하는 이유: 주요 장점

Vim을 배우고 사용하는 것에는 여러 가지 강력한 이점이 따른다.

  • 효율성: 초기 학습 곡선을 극복하고 나면, 모드 기반 편집은 최소한의 키 입력으로 복잡한 작업을 수행할 수 있게 해준다. 특히 키보드 홈 로우를 벗어나지 않고 많은 작업을 처리할 수 있어 생산성이 크게 향상된다.
  • 사용자 정의: Vim은 .vimrc라는 설정 파일을 통해 사용자의 작업 흐름에 맞게 거의 모든 측면을 커스터마이징할 수 있다. 또한 방대한 플러그인 생태계를 통해 파일 탐색기, 자동 완성, 버전 관리 시스템 통합 등 다양한 기능을 추가하여 개인에게 최적화된 개발 환경을 구축할 수 있다.
  • 어디서나 사용 가능: Vim 또는 그 전신인 vi는 거의 모든 리눅스 및 macOS 시스템에 기본적으로 설치되어 있거나 쉽게 설치할 수 있다. 이는 SSH를 통한 원격 서버 작업이나 그래픽 환경이 제공되지 않는 최소 설치 환경에서 텍스트 파일을 편집해야 할 때 매우 유용하다. Vim 기술은 특정 플랫폼이나 도구에 종속되지 않는, 오랫동안 가치를 유지하는 안정적인 기술이다. Vim과 vi는 수십 년의 역사를 가지고 있음에도 불구하고 여전히 거의 모든 유닉스 계열 시스템에서 사용 가능한 이유는 가볍고 강력하며 GUI 없이도 작동하기 때문이다. 이는 오늘 배운 Vim 기술이 앞으로 다양한 직무, 서버, 운영체제 버전에서도 계속 유효할 가능성이 높다는 것을 의미한다.

 

이러한 장점들은 Vim을 배우는 데 드는 초기 노력이 장기적으로 높은 생산성과 플랫폼 간 호환성으로 보상받을 수 있음을 시사한다.

 

내게 맞는 Vim 찾기: Ubuntu 24.04 LTS의 Vim 패키지

Ubuntu의 Vim 제공 현황

Ubuntu 24.04 LTS는 이전 버전들과 마찬가지로 공식 APT 저장소를 통해 여러 종류의 Vim 관련 패키지를 제공한다. 이를 통해 사용자는 자신의 필요와 시스템 환경에 가장 적합한 Vim 버전을 선택하여 설치할 수 있다. 일반적으로 Ubuntu 저장소에서 찾을 수 있는 주요 Vim 패키지로는 vim-tiny, vim, vim-nox, vim-gtk3, vim-athena 등이 있다.

 

Vim 변형 패키지 비교

각 패키지는 포함하는 기능과 의존성에서 차이가 있다.

  • vim-tiny
    • 이름에서 알 수 있듯이 가장 기본적인 기능을 제공하는 최소 버전의 Vim이다. 종종 서버 버전과 같은 최소 설치 환경의 Ubuntu 시스템에 기본적으로 설치되어 있을 수 있다.
    • 주요 제한 사항으로는 문법 강조(syntax highlighting), 플러그인 지원, 고급 스크립팅 기능 등이 빠져 있다는 점이다. 주로 시스템 복구나 자원이 극히 제한적인 환경에서 간단한 텍스트 편집을 위한 용도로 사용된다.
  • vim (또는 vim-nox)
    • vim 패키지는 일반적으로 "표준"으로 간주되는, 터미널 환경에서 모든 기능을 사용할 수 있는 버전이다. vim-nox는 이와 유사하지만, X11 그래픽 환경 관련 라이브러리에 대한 의존성 없이 컴파일된 버전이다("nox"는 "no-X"를 의미). 따라서 GUI 환경이 필요 없는 서버 환경이나 터미널 작업만을 선호하는 사용자에게 적합하다.
    • 이 패키지들은 문법 강조, 세션 관리, Vimscript 및 다른 언어(Python, Lua, Perl 등) 바인딩을 통한 스크립팅 지원, 플러그인 활용, 향상된 비주얼 모드 등 Vim의 강력한 기능 대부분을 포함한다.
  • vim-gtk3 (또는 vim-gnome)
    • 이 패키지는 vim의 모든 기능에 더해 그래픽 사용자 인터페이스(GUI) 지원이 포함된 버전이다. 일반적으로 Ubuntu의 기본 데스크톱 환경인 GNOME에서 사용하는 GTK3 툴킷을 기반으로 한다.
    • GUI 버전(gvim 명령으로 실행)은 그래픽 메뉴, 툴바 버튼, 마우스 지원, 그리고 무엇보다 중요한 시스템 클립보드와의 통합(+clipboard 기능)을 제공한다. 이는 데스크톱 환경에서 다른 애플리케이션과 텍스트를 복사/붙여넣기 할 때 매우 편리하다. 또한 폰트 렌더링 측면에서도 이점을 가질 수 있다. 중요한 점은 vim-gtk3 패키지를 설치하면 터미널 버전의 vim과 그래픽 버전의 gvim을 모두 사용할 수 있다는 것이다.
  • vim-athena
    • Athena 위젯 세트를 사용하는 오래된 GUI 버전이다. 현재는 GTK3 버전에 비해 덜 사용되지만, 여전히 저장소에서 제공될 수 있다.

 

이렇게 다양한 Vim 패키지가 존재하는 것은 Vim 자체가 핵심 기능과 선택적 기능으로 구성된 모듈식 설계를 가지고 있으며, 리눅스 배포판의 패키징 관행(의존성 관리를 위해 기능을 분할하는 방식)이 결합된 결과다. Vim은 컴파일 시 다양한 기능 플래그(+feature, -feature)를 설정할 수 있으며, 각 기능은 서로 다른 라이브러리 의존성을 가질 수 있다(예: GUI는 GTK/X11, Python 스크립팅은 Python 라이브러리 필요). Ubuntu 패키지 관리자들은 이러한 점을 고려하여 다양한 기능 세트와 의존성을 가진 여러 버전(tiny, nox, gtk3 등)을 만들어 사용자에게 세밀한 선택권을 제공하는 것이다.

 

패키지 선택 권장 사항

  • 극도의 시스템 자원 제약이 있는 경우가 아니라면 vim-tiny는 권장되지 않는다.
  • 대부분의 터미널 기반 사용자, 특히 서버 환경이나 터미널 작업을 선호하는 경우에는 vim 또는 vim-nox가 좋은 선택이다. GUI 관련 기능이 전혀 필요 없다면 vim-nox가 약간 더 가벼울 수 있다.
  • Ubuntu Desktop 사용자에게는 vim-gtk3를 강력히 권장한다. 이 패키지는 강력한 터미널 vim과 함께, 시스템 클립보드 연동 등 데스크톱 환경에 더 잘 통합되는 사용자 친화적인 gvim을 모두 제공하기 때문이다. vim-gtk3 패키지 하나로 터미널과 GUI 환경 모두에서 Vim의 이점을 누릴 수 있다는 점은 데스크톱 사용자에게 큰 유연성을 제공한다.

 

Ubuntu 24.04 LTS Vim 패키지 비교표

아래 표는 주요 Vim 패키지 간의 특징을 요약하여 보여준다.

패키지 이름 주요 특징 GUI 지원 스크립팅/플러그인 일반적인 사용 사례
vim-tiny 최소 기능 없음 제한적 기본 편집 / 최소 설치 환경
vim 전체 기능 (콘솔) 없음 지원 콘솔 환경 파워 유저
vim-nox 전체 기능 (콘솔, X 의존성 없음) 없음 지원 서버 환경 / 헤드리스 시스템 파워 유저
vim-gtk3 전체 기능 + GUI 예 (GTK3) 지원 데스크톱 사용자 (GUI/클립보드 연동 필요 시)

이 표는 사용자가 자신의 요구 사항에 가장 적합한 Vim 패키지를 선택하는 데 도움을 줄 것이다.

 

설치: 시스템에 Vim 준비하기

기존 설치 확인

Vim (어떤 버전이든)이 이미 시스템에 설치되어 있는지 확인하는 것이 좋다. 터미널에서 다음 명령어를 실행하여 확인할 수 있다.

vim --version

또는 dpkg 명령어를 사용할 수도 있다.

dpkg -l | grep vim

Ubuntu Desktop 설치 시 vim-tiny가 기본적으로 포함되어 있을 수 있다.

 

패키지 목록 업데이트

새 패키지를 설치하기 전에, 시스템이 사용 가능한 최신 패키지 버전을 인식하도록 로컬 패키지 인덱스를 업데이트하는 것이 중요하다. 다음 명령어를 사용한다.

sudo apt update

이는 apt install 명령을 실행하기 전에 항상 수행해야 하는 표준 절차다.

 

원하는 패키지 설치

패키지 목록 업데이트가 완료되면, apt install 명령어를 사용하여 원하는 Vim 패키지를 설치할 수 있다. 명령어 형식은 다음과 같다.

sudo apt install <package_name>

앞서 권장한 패키지에 대한 구체적인 설치 명령어는 다음과 같다.

  • 전체 기능 및 GUI 버전 (vim-gtk3) 설치:
    sudo apt install vim-gtk3
  • 전체 기능 콘솔 버전 (vim 또는 vim-nox) 설치:
    sudo apt install vim

또는

sudo apt install vim-nox

sudo는 관리자 권한으로 명령을 실행하며, apt install은 지정된 패키지와 해당 패키지가 필요로 하는 다른 모든 패키지(의존성)를 자동으로 다운로드하고 설치한다. Ubuntu의 패키지 관리 시스템인 apt를 사용하는 것은 의존성 문제를 자동으로 해결하고, 시스템 전체적으로 패키지 업데이트(apt upgrade) 및 제거(apt remove)를 일관되게 관리할 수 있다는 큰 장점이 있다. 따라서 특별히 소스 코드로부터 직접 컴파일해야 하는 매우 특정한 요구 사항이 없는 한, 대부분의 사용자에게는 apt를 통한 설치가 강력히 권장된다.

 

설치 확인

설치가 성공적으로 완료되었는지 확인하려면, 다시 vim --version 명령어를 실행한다.

vim --version

이 명령어는 설치된 Vim의 버전 정보와 함께 컴파일 시 포함된 기능 목록을 보여준다. 예를 들어, vim-gtk3를 설치했다면 출력 내용 중에 +clipboard 또는 +xterm_clipboard (시스템 클립보드 연동 기능) 및 +gui_gtk3 (GTK3 GUI 지원)와 같은 항목이 있는지 확인하여 필요한 기능이 활성화되었는지 알 수 있다.

 

첫걸음 떼기: 기본적인 Vim 사용법

Vim 시작하기

Vim을 시작하는 방법은 간단하다. 터미널에서 다음 명령어를 입력한다.

  • 단순히 vim을 입력하면 빈 편집 버퍼(새 파일 상태)로 Vim이 시작된다.
  • vim
  • vim 형식으로 실행하면, 이라는 파일이 이미 존재하면 해당 파일을 열고, 존재하지 않으면 해당 이름으로 새 파일을 생성하여 연다.
  • vim my_document.txt
  • 만약 vim-gtk3 패키지를 설치했다면, 그래픽 버전의 Vim인 gvim을 실행할 수도 있다. 터미널에서 gvim 또는 gvim 을 입력하거나, 데스크톱 환경의 애플리케이션 메뉴에서 gvim을 찾아 실행할 수 있다.
  • gvim my_document.txt

 

모드 전환: 일반 모드와 입력 모드

Vim은 시작 시 항상 일반 모드(Normal Mode)에서 시작한다는 점을 기억하는 것이 중요하다. 이 모드에서는 키 입력이 명령으로 해석된다. 텍스트를 입력하려면 입력 모드(Insert Mode)로 전환해야 한다. 다음은 일반 모드에서 입력 모드로 들어가는 일반적인 명령어들이다.

  • i: 커서(cursor) 에서부터 텍스트 삽입 시작
  • a: 커서 에서부터 텍스트 추가 시작
  • o: 현재 커서가 있는 줄의 _아래_에 새 빈 줄을 만들고 입력 모드로 전환
  • O: 현재 커서가 있는 줄의 에 새 빈 줄을 만들고 입력 모드로 전환

 

입력 모드에서 텍스트 입력을 마치고 다시 명령을 내릴 수 있는 일반 모드로 돌아가려면, 키보드의 Esc 키를 누른다. Esc 키는 Vim 사용의 핵심이며, 현재 어떤 모드에 있는지 확실하지 않을 때는 Esc를 눌러 일반 모드로 돌아오는 습관을 들이는 것이 좋다. 일반 모드는 다른 모든 모드(입력, 비주얼, 명령행)로 진입하거나 텍스트를 탐색하고 조작하는 모든 작업의 중심 허브 역할을 한다. 따라서 Esc 키를 자주 눌러 항상 일반 모드에 있음을 확인하는 것은 초보자에게 매우 중요하다.

 

기본적인 텍스트 편집

입력 모드에서는 일반적인 텍스트 편집기와 마찬가지로 키보드로 입력하는 내용이 화면에 그대로 표시된다.

 

저장과 종료 (명령행 모드)

파일 편집을 마친 후 저장하거나 Vim을 종료하려면, 먼저 Esc 키를 눌러 일반 모드인지 확인한 다음, : 키를 눌러 명령행 모드(Command-Line Mode)로 들어간다. 화면 하단에 : 프롬프트가 나타나면 다음 명령어를 입력하고 Enter 키를 누른다.

  • :w : 현재 파일을 디스크에 저장(Write)한다.
  • :q : Vim을 종료(Quit)한다. 단, 마지막 저장 이후 변경된 내용이 있으면 오류 메시지를 표시하며 종료되지 않는다.
  • :wq : 파일을 저장하고(Write) 종료(Quit)한다.
  • :q! : 변경된 내용이 있더라도 저장하지 않고 강제로 종료(Quit!)한다. 작업 내용을 잃을 수 있으므로 주의해서 사용해야 한다.
  • :x : :wq와 유사하지만, 파일에 변경 사항이 있을 경우에만 저장하고 종료한다. 변경 사항이 없다면 저장 과정 없이 바로 종료된다. 종종 :wq보다 선호된다.

 

Vim은 명시적으로 :w 명령을 통해 저장을 수행해야 한다. 이는 일부 GUI 애플리케이션처럼 예기치 않게 종료될 때 데이터가 손실되는 것을 방지하고, 사용자가 파일 상태를 디스크에 반영하는 시점을 정확하게 제어할 수 있게 해준다. :q 명령이 저장되지 않은 변경 사항이 있을 때 실패하는 것은 의도된 안전 기능이며, :q!는 이러한 안전 장치를 명시적으로 무시하는 방법이다. 따라서 자주 Esc 키를 눌러 일반 모드로 돌아오고, :w 명령으로 자주 저장하는 습관을 들이는 것이 좋다.

728x90

기본을 넘어서: Vim의 강력한 기능 활용하기

Vim의 기본적인 사용법에 익숙해졌다면, 이제 Vim을 진정으로 강력하게 만드는 기능들을 살펴볼 차례다. 이러한 기능들을 활용하면 텍스트 편집 작업의 효율성을 극대화할 수 있다.

 

효율적인 커서 이동

Vim에서는 방향키만을 사용하여 커서를 이동하는 것은 비효율적이다. Vim의 진정한 힘은 일반 모드에서의 다양한 이동 명령어에 있다.

  • 기본 이동: h (왼쪽), j (아래), k (위), l (오른쪽) 키를 사용한다. 이 키들은 키보드 홈 로우에 위치해 있어 손을 크게 움직이지 않고도 빠르게 커서를 이동할 수 있다.
  • 단어 단위 이동: w (다음 단어의 시작으로), b (이전 단어의 시작으로)
  • 줄 내 이동: 0 (줄의 시작으로), $ (줄의 끝으로)
  • 파일 전체 이동: gg (파일의 첫 줄로), G (파일의 마지막 줄로)
  • 특정 줄로 이동: G (예: 10G는 10번째 줄로 이동)

 

이 외에도 문장 단위, 문단 단위 등 훨씬 다양한 이동 명령어가 존재한다. 이러한 명령어들을 조합하여 사용하면 원하는 위치로 매우 빠르고 정확하게 이동할 수 있다.

 

강력한 검색 및 바꾸기

Vim은 정규 표현식(regular expression)을 지원하는 강력한 검색 및 바꾸기 기능을 제공한다.

  • 검색:
    • 일반 모드에서 / 다음에 찾을 패턴(문자열 또는 정규 표현식)을 입력하고 Enter를 누르면 아래 방향으로 검색한다. ?를 사용하면 위 방향으로 검색한다.
    • n 키를 누르면 다음 검색 결과로, N 키를 누르면 이전 검색 결과로 이동한다.
  • 바꾸기: 명령행 모드에서 substitute 명령 (:s)을 사용한다.
    • 현재 줄에서 첫 번째로 발견되는 old 문자열을 new 문자열로 바꾸기: :s/old/new/
    • 현재 줄에서 발견되는 모든 old 문자열을 new 문자열로 바꾸기: :s/old/new/g
    • 파일 전체에서 모든 old 문자열을 new 문자열로 바꾸기: :%s/old/new/g
    • 파일 전체에서 바꾸기를 수행하되, 각 경우마다 확인(confirm)하기: :%s/old/new/gc

 

정규 표현식을 활용하면 매우 복잡한 패턴의 텍스트도 효과적으로 찾아 바꾸거나 수정할 수 있다.

 

매크로: 반복 작업 자동화

동일하거나 유사한 편집 작업을 여러 번 반복해야 할 때, Vim의 매크로 기능을 사용하면 해당 작업을 기록하고 재생하여 자동화할 수 있다.

  • 기록 시작: 일반 모드에서 q 다음에 기록을 저장할 레지스터 이름(a-z 중 하나, 예: a)을 누른다. (예: qa)
  • 작업 수행: 자동화하려는 키 입력 순서(이동, 삭제, 삽입, 모드 전환 등 모든 일반 모드 및 입력 모드 작업 포함)를 그대로 실행한다.
  • 기록 종료: 일반 모드에서 다시 q를 누른다.
  • 매크로 재생: 일반 모드에서 @ 다음에 기록 시 사용했던 레지스터 이름을 누른다. (예: @a)
  • 마지막 매크로 반복 재생: @@를 누른다.

 

매크로는 복잡한 반복 작업을 단 몇 번의 키 입력으로 처리할 수 있게 해주는 매우 강력한 기능이다.

 

확장성: 플러그인의 세계

Vim은 핵심 기능만으로도 강력하지만, 방대한 플러그인 생태계를 통해 그 기능을 무한히 확장할 수 있다. 플러그인은 다음과 같은 다양한 기능을 추가할 수 있다.

  • 파일 시스템 탐색기 (예: NERDTree, vim-dirvish)
  • 향상된 자동 완성 및 코드 스니펫 (예: YouCompleteMe, coc.nvim, UltiSnips)
  • Git 연동 (예: vim-fugitive)
  • 특정 프로그래밍 언어 지원 강화 (LSP 클라이언트, 디버거 연동 등)
  • 테마 및 외관 개선

 

Vim 8 버전 이후에는 내장 패키지 관리 기능이 도입되었으며, vim-plug나 Vundle과 같은 외부 플러그인 관리자를 사용하면 수많은 플러그인을 쉽게 설치하고 관리할 수 있다. 플러그인 시스템은 Vim을 단순한 텍스트 편집기에서 사용자의 필요에 맞춘 완전한 개발 환경으로 변모시킬 수 있게 해준다. 다만, 많은 플러그인을 사용하게 되면 설정을 관리하고 잠재적인 충돌을 해결하는 데 추가적인 노력이 필요할 수 있다.

 

개인화: .vimrc 파일

사용자는 자신의 홈 디렉토리에 있는 .vimrc 파일 (경로: ~/.vimrc)을 수정하여 Vim의 동작을 개인적인 선호도에 맞게 설정할 수 있다. .vimrc 파일에는 다음과 같은 내용들을 설정할 수 있다.

  • Vim 옵션 설정 (예: set number - 줄 번호 표시, set syntax=on - 문법 강조 켜기, set tabstop=4 - 탭 크기 설정)
  • 키 매핑 변경 또는 사용자 정의 단축키 생성 (예: 특정 키 조합으로 자주 사용하는 명령 실행)
  • 사용자 정의 함수 작성
  • 플러그인 설정 및 로드

 

.vimrc 파일을 통해 사용자는 Vim을 자신에게 가장 편안하고 효율적인 도구로 만들 수 있다.

 

Vim의 이러한 고급 기능들은 서로 조합되어 사용될 때 더욱 강력한 시너지를 발휘한다. 예를 들어, Vim의 편집 명령어(동사, 예: d - 삭제, c - 변경, y - 복사)는 다양한 이동/텍스트 객체(명사, 예: w - 단어, $ - 줄 끝, /pattern - 검색 결과)와 결합될 수 있다. dw는 'delete word'(단어 삭제), c$는 'change to end of line'(줄 끝까지 변경)와 같이 조합된다. 이러한 'Vim 언어'의 구조를 이해하면, 기본적인 동사와 명사를 학습함으로써 매우 다양한 복합 명령을 직관적으로 구사할 수 있게 된다. 매크로는 이러한 명령어 시퀀스를 기록하는 것이며, .vimrc는 이 언어를 사용자 정의하는 방법이다.

 

Vim 학습 곡선: 투자와 보상

어려움 인정하기

Vim은 처음 접하는 사용자에게 악명 높을 정도로 가파른 학습 곡선을 가지고 있다는 점을 솔직하게 인정해야 한다. 이는 Vim의 독특한 모드 기반 편집 패러다임 때문이다. 대부분의 다른 편집기에서 익숙해진 '항상 입력 모드' 방식의 습관을 버리고, 일반 모드와 입력 모드를 의식적으로 전환하며 명령어를 사용하는 새로운 방식에 적응하는 데 시간이 걸린다. 이는 단순히 새로운 단축키를 외우는 것 이상으로, 텍스트와 상호작용하는 방식 자체를 새로 배우는 과정이다.

 

장기적인 이점

하지만 이러한 초기 학습의 어려움을 극복했을 때 얻는 보상은 매우 크다. 앞서 언급했듯이, Vim은 숙련된 사용자에게 비교할 수 없는 수준의 편집 속도, 효율성, 그리고 강력한 제어 능력을 제공한다. 또한, 거의 모든 유닉스 계열 시스템에서 사용할 수 있다는 점은 특히 원격 서버 환경에서 작업할 때 큰 자산이 된다. Vim 기술에 대한 투자는 장기적으로 개발자 또는 시스템 관리자로서의 경력 전반에 걸쳐 지속적인 이점을 제공할 것이다.

 

초기 학습 곡선은 가파르지만, 일단 기본적인 모드 전환(Esc, i/a 등), 파일 관리(:w, :q), 그리고 기본 이동(hjkl)에 익숙해지면 학습 속도는 점차 빨라진다. Vim의 명령어들이 조합 가능한 언어처럼 작동하기 때문에, 새로운 '동사'(명령)나 '명사'(이동/객체)를 배울 때마다 사용자의 능력은 기하급수적으로 향상된다. 즉, 가장 힘든 구간은 처음에 집중되어 있으며, 그 고비를 넘기면 이후의 학습은 훨씬 수월해진다.

 

필수 학습 자료: vimtutor

Vim 학습을 시작하는 가장 좋은 방법은 터미널에서 vimtutor 명령어를 실행하는 것이다. vimtutor는 대부분의 Vim 설치 시 함께 제공되며 (vim, vim-gtk3 패키지에 포함), 약 30분에서 1시간 정도 소요되는 대화형 튜토리얼이다. 이 튜토리얼은 Vim의 가장 핵심적인 개념과 필수 명령어들을 사용자가 직접 Vim 환경 내에서 따라하며 연습할 수 있도록 안내한다. vimtutor의 효과는 단순히 문서를 읽는 것보다 훨씬 뛰어나다. 작은 개념(이동, 삭제, 모드 전환 등)을 제시하고 즉시 사용자가 해당 작업을 수행하도록 요구함으로써, 반복을 통해 자연스럽게 필수적인 근육 기억(muscle memory)을 형성하도록 돕는다. 이 실습 중심의 단계별 접근 방식은 Vim의 독특한 조작법을 익히는 데 매우 효과적이다.

 

추가 학습 경로

vimtutor를 완료한 후에도 Vim의 방대한 기능을 계속해서 학습할 수 있는 자료는 많다.

  • Vim 내장 도움말: Vim 자체에 매우 상세한 도움말 시스템이 내장되어 있다. 일반 모드에서 :help를 입력하면 전체 도움말을 볼 수 있고, 특정 명령어에 대한 도움말을 보려면 :help <command> (예: :help :w, :help motion.txt) 형식으로 입력하면 된다.
  • 온라인 자료:
    • Vim 공식 웹사이트 (vim.org)
    • 대화형 온라인 튜토리얼 (예: OpenVim, Vim Adventures)
    • 커뮤니티 포럼 및 Q&A 사이트 (예: Vi and Vim Stack Exchange, Reddit의 r/vim)
    • 다양한 Vim 치트 시트(cheat sheet) 및 블로그 게시물

 

Vim을 마스터하는 데는 시간과 꾸준한 연습이 필요하다. vimtutor를 완료하는 것을 첫 목표로 삼고, 매일 조금씩이라도 꾸준히 사용하는 것이 중요하다.

 

조화로운 통합: Ubuntu 24.04 LTS 환경에서의 Vim

표준 패키지로의 제공

Vim 관련 패키지들(vim-tiny, vim, vim-nox, vim-gtk3 등)은 Ubuntu 24.04 LTS의 공식 저장소 내에서 표준적이고 잘 관리되는 패키지들이다. apt를 통한 설치는 Ubuntu의 패키지 관리 시스템과의 완벽한 통합을 보장하며, 이는 설치, 업데이트, 제거 과정을 단순하고 안정적으로 만든다.

 

LTS 버전 고려 사항

Ubuntu LTS(Long Term Support) 릴리스는 안정성을 최우선으로 한다. 이는 Ubuntu 24.04 LTS에 포함된 Vim 버전 (출시 시점에 따라 Vim 9.0 또는 9.1과 같은 9.x 버전일 가능성이 높음)이 LTS 지원 기간 동안 보안 업데이트는 받지만, Vim 프로젝트 자체에서 발표하는 가장 최신 기능(bleeding-edge)을 즉시 반영하지는 않을 수 있음을 의미한다. LTS 모델은 예측 가능하고 안정적인 Vim 환경을 제공하며, 이는 최신 기능보다는 시스템의 신뢰성을 더 중요하게 생각하는 사용자에게 유리하다. 즉, 24.04 LTS의 Vim 환경은 수년간 일관되게 유지될 것이므로 사용자와 시스템 관리자는 특정 버전의 동작에 의존하여 작업을 수행할 수 있다.

 

대부분의 사용자에게는 Ubuntu LTS 저장소에서 제공하는 Vim 버전이 안정성과 유지 관리의 용이성 측면에서 완벽하게 적합하며 권장된다. 아주 최신 Vim 기능이 반드시 필요한 고급 사용자는 PPA(Personal Package Archive)를 이용하거나 소스 코드로부터 직접 컴파일하는 방법을 고려할 수도 있지만, 이는 일반적인 경우에는 불필요하다.

 

한 가지 주목할 점은 Vim 9 버전에서 Vimscript(Vim 설정 및 확장에 사용되는 스크립트 언어)에 상당한 변화가 있었다는 것이다 (Vim9 script 도입). Ubuntu 24.04 LTS에 포함된 Vim 버전이 Vim 9.x라면, 인터넷에서 찾은 최신 .vimrc 설정 예제나 플러그인이 Vim9 script 문법을 사용할 수 있다. 기존 Vimscript도 여전히 작동하지만, 새로운 문법과 기존 문법을 혼용할 때 예기치 않은 동작이 발생할 수 있다. 따라서 설정을 커스터마이징하기 시작하는 중급 사용자들은 vim --version으로 정확한 버전을 확인하고, Vim 9 변경 사항에 대해 인지하고 있는 것이 도움이 될 수 있다. 하지만 초보 사용자들은 대부분의 핵심 기능과 기존 Vimscript 기반 설정이 문제없이 작동하므로 크게 걱정할 필요는 없다. Ubuntu 24.04에서 제공하는 Vim 버전은 충분히 강력하고 안정적이다.

 

데스크톱 환경과의 통합 (vim-gtk3)

vim-gtk3 패키지를 설치하면 제공되는 그래픽 버전 gvim은 Ubuntu의 기본 데스크톱 환경인 GNOME과 잘 통합된다. 이는 애플리케이션 메뉴에 gvim 아이콘이 나타나고, 시스템 테마를 어느 정도 따르며, 특히 중요한 시스템 클립보드와의 자연스러운 연동을 가능하게 한다. 데스크톱 환경에서 다른 애플리케이션과 텍스트를 자주 주고받는 사용자에게는 gvim이 매우 편리한 선택이 될 수 있다.

 

마치며

이번 글을 통해 Vim에 대해 알아보았다. 매번 `:wq!`만 쓰던 나였는데, `:x` 명령어나 매크로 기능, vimtutor는 이번에 조사를 하며 처음 알게 된 내용이었다. 조사를 하면서 느낀 점은, Vim은 의심할 여지 없이 강력하고 효율적인 텍스트 편집기라는 점이다. 모드 기반 편집이라는 독특한 접근 방식은 초기 학습 노력을 요구하지만, 일단 익숙해지면 비교할 수 없는 생산성과 유연성을 제공한다. Vim의 뛰어난 사용자 정의 기능과 방대한 플러그인 생태계는 사용자가 자신만의 완벽한 편집 환경을 구축할 수 있도록 지원하며, 거의 모든 운영체제와 환경에서 사용할 수 있다는 점은 Vim 기술의 가치를 더욱 높여준다.

 

Ubuntu 24.04 LTS 환경에서는 공식 저장소를 통해 다양한 버전의 Vim을 안정적으로 설치하고 사용할 수 있다. 특히 데스크톱 사용자를 위한 vim-gtk3 패키지는 터미널의 강력함과 GUI의 편리함을 모두 제공하며 시스템과의 통합도 뛰어나다.

 

Vim의 세계에 입문하고자 한다면, 먼저 자신의 필요에 맞는 Vim 패키지를 선택하여 설치하고, 즉시 vimtutor를 실행하여 기본기를 다지는 것부터 시작하기를 권장한다. 인내심을 가지고 꾸준히 연습하는 것이 Vim을 효과적으로 활용하는 열쇠다. Vim은 단순한 텍스트 편집 도구를 넘어, 안정적인 Ubuntu 24.04 LTS 플랫폼 위에서 리눅스 사용자, 개발자, 또는 시스템 관리자로서의 역량을 한 단계 끌어올릴 수 있는 귀중한 기술 투자가 될 것이다.

728x90