VI는 UNIX 계열 OS에서 매우 많이 활용되는 편집기로써 "Visual Editor"의 줄임말이다.
각종 문서를 Linux에서 편집할 수 있게 해주는 텍스트 기반 편집기로써 VI Editor가 Linux 활용의 첫걸음이라고 할 수 있다.
VI는 3가지 모드를 1개 기능에 합쳐 입력값을 통해 모드를 자유자재로 넘나들며 편집이 가능하다는 특징을 가지고 있다.
VIM은 "VI iMproved"의 약자로써 프로그램 소스 코드 편집 시 유용한 수많은 추가 기능이 포함된 VI 확장판이다.
VIM은 VI의 모든 기능을 가지고 있으며 VI에서 자주 발생하는 몇 가지 문제들도 처리해 놓은 VI의 개량판이라고 이해하면 될 것이다.
VIM에서 해결되는 대표적인 VI의 문제는 "방향키 문제"이다.
VI Editor를 사용 할 때 화살표를 누를 경우 창이 움직이지 않고 "D, B, C, A" 같은 이상한 알파벳이 입력되는 현상이 있다. 또한 Backspace를 눌러도 글이 지워지지 않아 수정이 안 되는 현상도 존재한다.
이런 경우 VIM Editor를 설치하여 사용하면 이런 문제를 걱정하지 않고서 문서를 편집할 수 있다.
최근 많은 Linux 환경에서는 alias vi='vim'
을 통해 VI Editor를 사용하려 하면 자동으로 VIM Editor를 활용하도록 alias 설정을 해놓았다.
따라서 VIM = VI로 착각하는 사람도 있지만 엄연히 다른 기능임을 이해하고 가자.
VI에도 몇 가지 단점이 존재하지만 가장 큰 문제는 "불편하다"라는 것이다.
VI는 익숙해지면 편하고 강력하지만 익숙해지기까지는 매우 긴 학습 과정이 필요하다.
VI는 비직관적이고 학습 장벽이 있는 에디터이다보니 모든 기능을 제대로 활용하지 못할 경우 메모장보다도 장점이 없는 그저 불편한 문서 편집 도구일 뿐이다.
실제로 필자도 문구 수정을 많이 해야하는 Linux 파일인 경우 Windows로 파일을 가져와 일괄 수정을 한 후 다시 Linux에 넣는 경우도 많았다.
물론 농담이겠지만 아래 사진은 VIM Editor가 얼마나 비직관적이고 불편한지를 보여주는 예시라고 할 수 있겠다.
출처 : https://dev.to/flaviabastos/til-how-to-move-a-line-in-vim-4588
VI는 총 3가지 모드가 존재한다.
입력 모드(Text Input Mode)
명령 모드(Command Mode)
라인 모드(Last Line Mode)
참고로 "비쥬얼 모드(Visual Mode)"라는 모드도 있기는 하지만 거의 활용하지 않으므로 설명은 생략하겠다.
VI를 입력해도 확장판인 VIM Editor를 사용하도록 alias를 등록하는 것이 좋다.
따라서 VIM Editor를 설치하고 alias에 등록하는 과정을 먼저 수행하자.
sudo apt-get install vim
을 통해 VIM Editor 설치vim ~/.bashrc
를 통해 .bashrc 접속 & alias vi='vim'
추가 & source ~/.bashrc
로 설정 동기화vi [파일명]
무조건 Command Mode로 접속한다.
ZZ (Z : shift + z)
: (콜론)
ESC 버튼
ESC 버튼
위 3개 명령어를 조합하여 Last Line Mode에서 VI Editor를 종료하고 Shell 환경으로 돌아간다.
주로 활용하는 조합 명령어는 아래와 같다.
:wq!
: 변경 사항을 저장하고 나가기:qa!
: 변경 사항을 저장하지 않고 나가기Last Line Mode의 또 다른 사용법은 "set 환경변수" 설정이다.
VI Editor에서 set을 통해 vi 환경 설정을 수행하면 더욱 쉽게 텍스트 편집 및 확인이 가능하다.
:set
으로 설정한 환경 설정 값은 "no"를 붙임으로써 취소시킬 수도 있다.
예를 들어 :set nu
로 설정한 VI 환경값을 취소시키고 싶다면 :set nonu
로 "no"를 앞에 붙여준 명령어를 입력하면 된다.
유용할 것 같은 set 옵션들과 적용 전/후 사진을 추가하겠다.
:set ai
나 :set si
같은 자동 들여 쓰기 옵션을 수행한 후 복사 붙여 넣기를 하면 계단 현상이 일어나는데 이 옵션을 통해 방지할 수 있음
Sam을 검색했을 때 IC를 적용하지 않은 경우 정말 일치하는 "Sam"을 찾지만 IC를 적용할 경우 대소문자 구분을 하지 않으므로 "sam"을 찾는다.
:set ts=n
: Tabl 키를 눌렀을 떄 이동 크기를 n으로 설정:set sw=n
: :set si 옵션을 사용할 경우의 자동 들여 쓰기 이동 크기를 n만큼으로 설정VI Editor에 일괄적으로 적용시키고 싶은 환경변수가 있을 수 있다.
예를 들어 Line에 번호를 붙여주는 "set nu"라던가 들여 쓰기를 해주는 "set ai"는 Default로 적용시키고 싶을 수도 있다.
이 경우 ".vimrc"라는 파일에 set 환경 변수 설정을 저장하면 VI Editor를 사용할 때 저장된 환경 변수가 Default로 적용된다.
".vimrc" 파일 설정 방법은 아래와 같다.
.vimrc에 set si
와 set nu
를 적용하고 VI Editor에 접속했을 경우 아무런 set 옵션을 주지 않았음에도 정상적으로 Set Option이 적용되었음을 확인할 수 있다.
ed는 Unix OS용 Line Editor이다.
VI Editor는 전체 글에 대한 Editor라면 ED는 1개 줄에 대한 Editor이다.
사용법이 VI Editor보다도 복잡하며 기능상 제한 사항도 많다.
운영 모드도 명령어 모드, 텍스트 입력 모드 2개밖에 없어 현재는 거의 활용되지 않고 Unix 기반 OS를 위한 POSIX와 오픈 그룹 표준의 일부로 남아있다.