vi ? vim ? 내가 쓰기 편하게 설정하기

   Unix / Linux 에서 가장 기본적인 편집기인 vi의 나이는 내 나이보다더 많다.   기본적으로 Unix / Linux에 탑재된 텍스트 에디터이지만 vi 자체만으로는 살짝 아쉬운 부분이 있다.   그래서 나온게 vi 기능을 개선한 vim 이다.   기본 vi 에 여러가지 기능을 추가해서 개선된 제품이기에 가능하면 vim을 사용하는게 더 편하다.  추가로 vim이 vi 에 추가기능을 더해서 만든 것이라면 vim-enhanced는  vim의 패키지 중 하나로 더 많은 추가기능을 더한 편집기이다.

  간단하게 차이점을 확인해 보자.

vi
   - 역사 : 1976년 Bill Joy가 Unix 개발을 위해서 개발한 Text Editor 이다.
   - 기능 : 아주 기본적인 텍스트 편집 기능을 제공한다.
   - 호환성 : 많은 Unix 기반의 OS에 기본 편집기로 사용되며, 최소한의 리소스만을 차지한다.
   - 확장성 : 확장성 면에서는 제한적이지만 기본에 충실하다.

vim
   - 역사 : 1991년 Bram Moolenaar 가 vi를 기반으로 개할한 편집기이다. Vi IMproved 라는 이름에서 알 수 있듯이 vi의 기능을 대폭 개선한 버전이다.
   - 추가기능
      ・ Syntax Highlighting (문법강조) : 다양한 Programming Language의 구문 강조 기능을 제공한다.
      ・ Multi Windows (멀티윈도우) : 여러 파일을 동시에 열어서 작업할 수 있다. Tab으로 관리한다.
      ・ 확장성 및 PlugIn : 다양한 PlugIn  과 사용자 정의 설정을 통해 기능이 확장된다.
      ・ Undo Tree (언두트리) : 복잡한 Undo / Redo 트리를 지원하여 작업 내역을 쉽게 관리할 수 있다.
   - 문서화 : 풍부한 내장 도움말과 광범위한 온라인 문서가 존재한다.

vim-enhanced
   - GUI 지원 : gvim과 같은 Graphic Interface 지원이 포함되어 있다.
   - 추가기능 : vim의 기본 기능 외에도 여러가지 추가 기능과 향상된 구성 옵션을  포함하고 다양한 PlugIn 을 적용할 수 있다.

   vi에서 vim으로 발전하면서 바뀐 정도는 아니지만 어차피 설치해서 사용할 것이라면 vim-enhanced를 설치해서 사용하는 것도 나쁘지 않을 듯 싶다.   설치에 대한 부분은 다루겠지만 기본적으로 이번 포스팅에서는 vim을 기준으로 한다.
   vim은 기본으로 설치되는 에디터가 아니기 때문에 설치가 필요하다.   (RedHat 계열의 Rocky Linux 환경을 기준으로 작성했다.)   만약 설치가 되어 있다면 재설치 할 필요는 없다.

yum -y install vim

yum list installed | grep vim

[ vim 이 정상적으로 설치된 경우 ]

   나의 경우엔 설치가 되어 있다 하물며 vim-enhanced 버전으로 vim이 설치된 것을 볼 수 있다.   만약 설치가 되어 있지 않다면 위의 명령어로 설치가 될 것이다.   이제 alias 설정으로 vi를 입력했을 때 vim이 실행하도록 설정하자.   별도의 shell을 사용하는 것이 아니라면 기본적으로 bash 쉘을 사용하고 있을 테니 /etc/bashrc 에 alias를 설정해 주면 된다.

vi /etc/bashrc

   가장 아래로 이동해서 i 를 누르고 alias 설정을 한다.   저장은 [ESC] -> : -> wq! -> [Enter]

alias vi='/usr/bin/vim'

[ vi 로 실행된 편집화면이라 별도의 설정이 없었다면 이처럼 흑백의 화면으로 표기 된다 ]

   변경된 alias를 적용시켜 보자.

source /etc/bashrc

   화면에서는 별다른 변화가 없지만 이제 vi를 입력하면 vim이 실행 될 것이다.   앞서 열었던 '/etc/bashrc' 파일을 다시 vi를 통해서 열어보자.   그러면 vim 으로 열리면서 앞서 열었을 때랑 다른 모습의 화면을 볼 수 있다.

[ vim 으로 열리면서 시인성이 좋게 바뀌었다 ]

  vim을 쓰면서 아무 설정을 하지 않았다면 줄번호라든지 마우스라든지 GUI 에서 사용하던 Text Editor에서 기본적인 것이라 생각되는 기능들이 안된다는 것을 알 수 있다.   물론 Text 기반은 Terminal Console 이기에 GUI만큼 쉽게 사용할 수 있지는 않지만 최소한 불편함은 없어야 하기에 추가적인 옵션을 적용해주면 거부감 없이 사용할 수 있게 된다.
   vim의 각종 옵션을 설정해주기 위해서는 vimrc 를 설정해 줘야 한다.   만약 Terminal 로 접속되는 모든 User에게 같은 적용을 하고자 한다면 /etc/vimrc 를 수정하면 되고 현재 로그인된 사용자에게 한정해서 적용하게 하려면 ~/.vimrc 파일을 수정하면 된다.   나는 모든 사용자 적용을 기준으로 /etc/vimrc 를 수정하는 것으로 하겠다.

vi /etc/vimrc

기본 설정된 것들이 보인다.  편의를 위해서 설정할 만한 항목을 표로 정리해 봤다.

Desc. On / Set Off
문자열 인코딩 방식 set encoding=utf-8
파일 인코딩 방식 set fileencoding=utf-8
개행 코드 지정 set fileformats=unix,dos
백업 설정 set backup set nobackup
백업 파일 생성 디렉토리 지정 set backupdir=~/backup
검색 이력 개수 설정 set history=50
검색 시 대소문자를 구별하지 않고 검색 set ignorecase
검색 시 대소문자를 같이 써서 검색하면 대소문자를 구별해서 검색 set smartcase
검색 시 일치하는 단어 Highlight 표기 set hlsearch set nohlsearch
검색 시 검색어를 입력하는 도중에도 검색을 시작하도록 설정 set incsearch set noincsearch
검색 시 문서의 끝에서 처음으로 돌아가지 않음 set nowrapscan set wrapscan
행번호 표시 set number set nonumber
줄바꿈시 ($)나 (^|)를 표시 set list
괄호 사용시 열고 닫히는 관계의 괄호를 강조 set showmatch
파일의 끝에 있는 개행을 자동으로 제거 set binary noeol
자동 인덴트 (소스코드나 텍스트를 계층 구조에 맞게 들여쓰기 하는 것) set autoindent
문법에 맞게 색상 표시 set syntax on set syntax off
syntax on 했을 때 주석의 색상 변경 set highlight Comment ctermfg=LightCyan
윈도우 넓이와 높이를 접을 수 있게 설정 set wrap set nowrap
파일 종류에 따른 구문강조 set filetype indent on set filetype indent off
마우스 사용 set mouse=a set mouse=
자동 들여쓰기 간격 set tabstrop=4

   대표적으로 많이 사용하는 옵션만 정리했다.   위의 설정 파일에 설정을 하게되면 vim 기동시 적용이 되지만 vim을 사용하는 도중에  즉시 정용을 하려면 [ESC] -> : 이후에 설정값을 입력하면 적용할 수 있다.

   ** 마우스 사용에 대한 옵션은 5가지가 있다. (빈칸으로 놓으면 설정을 취소한다.)
     - a : 모든 Mode에서 마우스 사용을 활성화
     - n : 일반 Mode에서 마우스 사용을 활성화
     - v : Visual Mode에서 마우스 사용을 활성화
     - i : 삽입 Mode에서 마우스 사용을 활성화
     - c : 명령줄 Mode에서 마우스 사용을 활성화

[ vi 환경설정의 예 ]
[ 위의 설정이 적용된 vi 의 모습 ]

syntax on                       "구문 강조 기능을 켬
set background=dark             "배경 색상을 어두운 테마에 맞게 설정
colorscheme jellybeans          "jellybeans 테마를 사용

set number                      "행 번호를 표시
set wrap                        "줄을 자동으로 감싸줌
set tabstop=4                   "탭 간격을 4로 설정
set expandtab                   "탭 문자를 공백으로 변환
set shiftwidth=4                "들여쓰기 시 탭 간격을 4로 설정
set autoindent                  "새 줄을 입력할 때 이전 줄과 동일한 들여쓰기를 함
set smartindent                 "스마트 들여쓰기 활성화
set cursorline                  "현재 커서의 위치의 줄을 강조
set showmatch                   "일치하는 괄호를 강조
set incsearch                   "입력한 검색어에 맞는 내용을 실시간으로 검색
set ignorecase                  "대소문자를 구분하지 않고 검색
set smartcase                   "검색어에 대문자가 포함된 경우 구분하여 검색
set hlsearch                    "검색된 항목을 강조 표시
set showcmd                     "현재 입력 중인 명령어를 화면에 표시
set ruler                       "화면의 하단에 커서 위치를 표시
set mouse=a                     "마우스 사용 활성화
set clipboard=unnamedplus       "시스템 클립보드와 Vim의 클립보드를 동기화
set relativenumber              "상대적인 행 번호를 표시
set laststatus=2                "상태줄을 항상 표시
set showmode                    "모드(예: INSERT, REPLACE)를 표시
set t_Co=256                    "터미널 색상 수를 256으로 설정
set history=100                 "명령어 기록을 100개까지 저장
set undofile                    "실행 취소 파일을 저장하여 프로그램을 종료한 후에도 실행 취소를 할 수 있도록 함
set undolevels=100              "실행 취소 단계를 100단계로 설정
set undodir=~/.vim/undodir      "실행 취소 파일을 저장할 디렉토리를 설정
set statusline=%F%m%r%h%w\ [%{&fileformat}]\ [%{&fileencoding}]\ [%{&filetype}]\ %=%-14.(%l,%c%V%)\ %P  "상태줄 형식 설정


   위의 사진에서 볼 수 있듯이 문법에 맞게 색깔이 구분되어 있다.   사람의 취향은 다 다르니... 내가 원하는 테마로 변경해서 사용 할 수 도 있다.   vi의 color 테마를 변경하고자 한다면 원하는 테마를 다운로드 받아서 설정을 해줘야 한다.   Google에서 Vim ColorScheme 를 검색해 보면 여러 스타일의 테마를 볼 수 있다.
   여러 사이트가 있겠지만 대표적으로 www.vim.org 에서 찾는게 보편적이다.   원하는 테마를 선택하고 /usr/share/vim/vim82/colors 디렉토리에 복사하면 된다.   vim82 의 경우 vim의 버전마다 다를 수 있으니 /usr/share/vim 디렉토리로 이동해서 직접 목록을 확인 한 후 경로를 확인하기 바란다.

   해당 경로에 가면 기본적으로 제공되는 여러 ColorScheme 가 보인다.   내가 사용하고자 하는 ColorScheme가 JellyBeans 라면 다운로드 받아서 위의 디렉토리에 위치시키자.

https://www.vim.org/scripts/script.php?script_id=2555

 

jellybeans.vim - Colorful, dark color scheme : vim online

jellybeans.vim : Colorful, dark color scheme  script karma  Rating 886/294, Downloaded by 40612  Comments, bugs, improvements  Vim wiki created by NanoTech   script type color scheme   description A colorful, dark color scheme, inspired by ir_black a

www.vim.org

  최신버전의 파일은 위의 링크에서 받을 수 있다.  일단 다운로드 받아서 업로드 하는게 귀찮으니 curl을 이용해서 해당 디렉토리에서 직접 다운로드 받도록 하자.

curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
mkdir -p ~/.vim/colors
mv jellybeans.vim ~/.vim/colors/
vi .vimrc

  이제 다운로드 받은 ColorScheme 를 적용하기 위해서 환경설정 파일(위에서 편집했던 파일)을 열어서 아래의 코드로 설정해주면 적용이 된다.   (상황에 따라 재접속을 해야 보여지는 경우가 있다.)

colorscheme jellybeans


   앞서 캡쳐된 vim  화면과 jellybeans 가 적용된 화면의 차이를 알 수 있다.

   이번 포스팅에서 기술된 내용 이외에도 멀티윈도우를 사용한다든지 여러가지 설정등을 통해서 vim을 상용자 편의에 맞게 설정할 수 있는 방법들이 많이 있다.   참고로 멀티윈도우에 대해서 다뤘던 내용은 아래의 링크를 참고 하기 바란다.

https://clien78.tistory.com/198

 

VIM Plugin을 이용해서 IDE 처럼 사용해보기

예전에 나는 Windows의 IDE 툴들이 익숙해서 그랬는지... 터미널 사용을 지양했던 것 같다. 나름 개발에서 은퇴했다고 생각했는데... 다시금 코딩을 하려고 보니 Server를 만지는 일들이 잦아 졌다. OSX

blog.iamwhatiam.co.kr

 

   추가적으로 MacOS 에서의 vim 설정은 조금 다르다.    위의 설명은 일반적인 Linux를 기준으로 했다.   하지만 OSX의 경우에는 경로 및 설치 방법이 조금 다르기 때문에 아래의 내용을 참고 하기 바란다.

brew install vim

brew reinstall vim

[ brew를 통해서 vim을 설치 한다 ]

   최근 OSX에서 사용하기 편한 Package Manager가  brew 이다.   brew 설치 및 사용 방법에 대한 부분은 이 글에서 다루지 않겠다.   z-shell 을 설치했다면 아마도 그 과정에서 brew 가 설치 되었을 거라고 생각된다.

   brew를 통해서 vim을 설치하자.   만약 이미 설치가 되어 있다면 재설치를 해서 최신 버전으로 설치를 한다.
   설치 과정에서 보여지는 메시지를 보면 어디에 설치 되는지 경로가 보여진다.   위의 캡쳐의 경우에는 '/opt/homebrew/Cellar/vim/9.1.0500'에 설치된 것을 알 수 있다.   그렇다면 alias 설정시 위의 설치경로에 설치된 vim을 바라 볼 수 있게 설정해줘야 한다.   zshell을 사용하고 있다면 .zshrc에 설정해주면 된다.

alias vi="/opt/homebrew/Cellar/vim/9.1.0500/bin/vim"

 

   테마 파일 적용 위치도 살짝 다르다.

# 1. .vim/colors 디렉터리 생성
mkdir -p ~/.vim/colors

# 2. jellybeans.vim 파일 이동
mv ./jellybeans.vim ~/.vim/colors/