Rocky Linux 9 vim 설정

Linux

이 글에서는 확장된 기능을 가진 에디터 vim을 설치하는 방법을 소개합니다.

vi와 vim의 차이점

vi (Visual Editor)

  • 기본 에디터: vi는 Unix 시스템에서 기본으로 제공되는 텍스트 편집기입니다.
  • 기능 제한: 기본적인 텍스트 편집 기능만을 제공합니다. 예를 들어, 코드 색상 강조, 자동 완성, 다중 언어 지원 등의 고급 기능이 없습니다.
  • 호환성: 다양한 Unix 및 Linux 배포판에서 기본적으로 설치되어 있습니다.
  • 작은 크기: 매우 가볍고 시스템 자원을 거의 사용하지 않습니다.

vim (Vi IMproved)

  • 확장된 기능: vi에 비해 많은 고급 기능이 추가되었습니다. 예를 들어, 코드 색상 강조, 자동 완성, 매크로, 다중 창 지원 등이 있습니다.
  • 플러그인 지원: vim은 다양한 플러그인을 통해 기능을 확장할 수 있습니다. 사용자 정의가 가능하며, 다양한 개발 환경에 맞춰서 사용할 수 있습니다.
  • 편의성: vi에 비해 사용자가 좀 더 편리하게 사용할 수 있도록 많은 기능이 추가되어 있습니다. 예를 들어, 실시간 검색 및 치환 기능, 개선된 언어 지원 등이 있습니다.
  • 커뮤니티 및 문서: vim은 활발한 커뮤니티가 있으며, 다양한 온라인 문서와 튜토리얼을 통해 배우기 쉽습니다.
  • 호환성: 대부분의 Linux 배포판에서 기본적으로 설치되거나 쉽게 설치할 수 있습니다. vi와의 호환성도 유지됩니다.

주요 차이점 요약

  • 기능 차이: vim은 vi에 비해 훨씬 많은 기능을 제공하며, 특히 개발자들에게 유용한 기능이 많습니다.
  • 사용자 경험: vim은 사용자 친화적인 기능을 많이 제공하여 vi보다 사용하기 편리합니다.
  • 확장성: vim은 플러그인을 통해 기능을 확장할 수 있습니다.
  • Linux 시스템에서 일반적으로 vim을 설치하고 사용하는 것이 더 유리하며, 특히 프로그래밍이나 고급 텍스트 편집 작업에 매우 유용합니다.

vim 프로그램 설치

다음 명령으로 vim을 설치합니다.(OS설치 시 [소프트웨어] 카테고리의 [소프트웨어 선택(S)]에 따라 이미 설치 되어 있을 수 있습니다.)

[root]# dnf -y install vim-enhanced

많은 사용자가 기본적으로 vi 명령어를 사용하여 텍스트 파일을 편집합니다. 이 경우, vim의 고급 기능을 활용하고자 한다면 매번 vim 명령어를 입력해야 합니다.alias vi=’vim’ 설정을 통해 vi 명령어를 입력하면 자동으로 vim이 실행되도록 함으로써 편의성을 높일 수 있습니다.

다음과 같이 vi명령을 사용하여 마지막 줄에 별칭을 추가합니다.

[root]# vi ~/.bashrc
...중간 생략 ...
alias vi='vim'

변경을 반영하려면 다시 로그인 해야하지만 다음 명령으로 현재 로그인 세션에 변경을 적용할 수 있습니다.

[root]# source ~/.bashrc

UID가 200보다 큰 사용자 계정은 [vim-enhanced] 패키지에 포함된 [/etc/profile.d/vim.sh] 파일에 따라 별칭이 자동으로 적용되므로 다음과 같은 개별 설정이 필요하지 않습니다

vim 설정 커스텀

다음 명령으로 유저 별 vim의 고유 환경 설정을 할 수 있습니다. 모든 유저의 환경을 일괄공통으로 설정하려면 /etc/vimrc파일을 수정합니다.

[root]# vi ~/.vimrc

설정 예

vim 자체 확장 기능 사용 (vi와 호환되지 않음)

set nocompatible

.vimrc 파일에서 한글 파일 인코딩 설정 예제

" 인코딩 설정: 기본 인코딩을 UTF-8로 설정
set encoding=utf-8

" 파일 인코딩 설정: 여러 인코딩을 시도하며 파일을 여는 순서 지정
set fileencodings=utf-8,euc-kr,latin1

" 파일 인코딩과 관련된 추가 설정
set fileencoding=utf-8

" 파일 형식 설정: 줄 바꿈 자동 인식, 자동으로 파일 형식을 감지하고 Unix 형식으로 저장
set fileformats=unix,dos

" 한글 입력 모드 설정 (MacOS의 경우)
" set macmeta

" 클립보드 사용 설정: 시스템 클립보드를 사용하여 복사 및 붙여넣기 가능
set clipboard=unnamedplus

" 기타 편의 설정
set helplang=ko
set termencoding=utf-8

.vimrc 파일에서 백업 설정 예제

" 백업 파일을 생성하도록 설정
set backup

" 백업 파일을 저장할 디렉터리 지정
set backupdir=~/.vim/backups

" 파일을 덮어쓰는 동안 임시 파일을 생성하여 데이터 보호
set writebackup

" 백업 파일의 이름 형식 설정
set backupext=.bak

" 스왑 파일 생성 위치 설정
set directory=~/.vim/swaps

" 백업 파일 유지 기간 설정 (7일)
set backupcopy=yes

" 파일이 열려 있는 동안 스왑 파일을 유지하도록 설정
set swapfile

" 영구적이고 주기적으로 백업을 위해 언두 파일 설정
set undofile
set undodir=~/.vim/undos

" 백업 파일을 사용할지 설정
set noswapfile

" 백업 파일이 생성되는지 확인
set confirm

" 에디터를 닫을 때 백업 파일을 삭제할지 여부 설정
set nobackup

" 임시 파일 생성 위치 설정
set backupskip=/tmp/*,/private/tmp/*

" 백업 파일의 이름 형식을 설정 (기본: ~)
set backupskip=.bak

" 백업 파일을 생성할 때 원본 파일을 삭제하지 않도록 설정
set backupcopy=auto

" 추가적인 보안 설정: 백업 디렉터리와 파일 권한 설정
if !isdirectory($HOME . "/.vim/backups")
  call mkdir($HOME . "/.vim/backups", "p", 0700)
endif
if !isdirectory($HOME . "/.vim/swaps")
  call mkdir($HOME . "/.vim/swaps", "p", 0700)
endif
if !isdirectory($HOME . "/.vim/undos")
  call mkdir($HOME . "/.vim/undos", "p", 0700)
endif

.vimrc 파일에서 검색 설정 예제

" 검색 시 대소문자를 구분하지 않도록 설정
set ignorecase

" 검색 패턴에 대문자가 포함된 경우 대소문자를 구분하도록 설정
set smartcase

" 검색할 때 입력한 패턴에 맞는 첫 번째 항목으로 즉시 이동 (set noincsearch)
set incsearch

" 검색 결과를 강조 표시(set nohlsearch)
set hlsearch

" 현재 검색된 항목의 개수를 상태 줄에 표시
set showmatch

" 검색할 때 화면을 자동으로 스크롤하여 커서 위치를 중앙에 배치
set scrolloff=5

" 매치 항목으로 이동할 때 화면의 중앙에 위치시키는 설정
set cursorline

" 검색할 때 입력한 패턴에 맞는 항목을 상태 줄에 표시
set wildmenu

" 최근 검색 기록을 사용할 수 있도록 설정
set history=1000

" 검색할 때 화면이 다시 그려지지 않도록 설정
set lazyredraw

" 명령행 모드에서 완성된 명령어를 화면에 표시
set showcmd

" 상태줄에 더 많은 정보를 표시
set ruler

" 파일을 열 때 마지막 검색 패턴을 자동으로 지우기
autocmd BufReadPost * let @/=''

" 텍스트 복사 시 시스템 클립보드를 사용하도록 설정
set clipboard=unnamedplus

.vimrc 파일에서 행 번호 설정 예제

" 기본 행 번호를 표시합니다.
set number

" 상대 행 번호를 표시합니다.
set relativenumber

" 행 번호 표시 폭을 5로 설정합니다.
set numberwidth=5

" 현재 행 번호를 강조 표시합니다.
set cursorline

" 행 번호 색상 설정 (기본 테마에서 사용할 경우)
highlight LineNr ctermfg=darkgrey
highlight CursorLineNr ctermfg=yellow

" 특정 파일 유형에 대해 다른 행 번호 설정 적용 예제
autocmd FileType markdown setlocal nonumber norelativenumber

" 비주얼 모드에서 선택한 영역의 시작과 끝에 행 번호 표시
set ruler

" 상태줄에 현재 커서 위치를 표시합니다.
set ruler

" 명령어 모드에서 입력 중인 명령어를 표시합니다.
set showcmd

" 긴 줄을 자동으로 줄바꿈하여 표시합니다.
set wrap

개행($) 이나 탭(^I ) 가시화

set list

괄호 입력 시 대응 괄호 강조

set showmatch

파일 말미에 줄 바꿈 넣지 않기

set binary noeol

자동 들여쓰기 활성화

set autoindent
noautoindent

구문별로 색 구분 표시

syntax on

[ syntax on ]을 하면 코멘트문의 색상을 변경합니다.

highlight Comment ctermfg=LightCyan
syntax off

윈도우창 크기에 맞춰 줄바꿈

set wrap
set now rap

댓글

제목과 URL을 복사했습니다