[linux][vi] VI 사용 방법

2020. 2. 27. 22:07·리눅스

VI는 터미널 환경에서 많이 사용되는 텍스트 에디터입니다. 리눅스 배포판에 기본적으로 설치되어있고 다양한 기능을 가지고 있어 자주 사용하게 됩니다.

 

우리가 터미널 환경에서 사용하는 VI는 보통 VIM(Vi Improved)인 경우기 많습니다. VIM은 VI를 개선하여 만들어진 프로그램으로 리눅스에는 기본적으로 VIM이 VI로 alias가 등록되어 있습니다.

# vi 명령의 alias 확인 
$ alias vi
alias vi='vim'

VI의 특징

  • 문법 강조
    • 파일 타입을 이용하여 문법 강조 기능 제공
  • 다양한 기능
    • 검색, 치환, 복사, 붙여 넣기, 블록 지정 등 다양한 기본 기능 제공
    • 단축키를 이용하여 빠른 작업 가능
  • 테마 설정
    • 기본 테마 변경 및 사용자 정의 테마 설정 가능

VI 사용 모드

VI는 4가지의 모드(명령, 입력, EX, 비주얼)가 있습니다. 각 모드의 상태는 좌측 하단에 출력되는 상태의 이름을 이용하여 확인할 수 있습니다.

 

 

  • 명령 모드
    • VI를 실행했을 때 기본 상태
    • ESC 키를 입력하여 모드 설정
  • 명령 모드
    • 에서 i, a 등의 키를 이용하여 입력 모드로 진입
    • 문자를 입력
  • EX 모드
    • 명령모드에서 콜론(:)을 입력하여 진입
    • EX 명령어 실행
  • 비주얼 모드
    • 명령 모드에서 블록 지정 키(v)를 입력하여 진입
    • 블록 지정 가능

주요 단축키

이동 - 명령모드

키 비고
h 좌
l 우
j 상
k 하
gg 첫 라인으로
G 마지막 라인으로

상하좌우 화살 키로 이동 가능

복사, 붙여넣기, 되돌리기 - 명령 모드

키 비고
u 되돌리기
y 복사
p 붙여넣기

삭제

키 비고
x 현재 위치 삭제
X 앞으로 삭제
dd 현재 라인 삭제
dG 현재 라인부터 마지막 라인 삭제

화면 전체 삭제는 gg로 첫 라인으로 커서를 옮기고, dG를 입력하여 화면 전체를 삭제

검색

명령 모드에서 슬래쉬(/) 또는 물음표(?)를 입력하여 검색을 할 수 있습니다.

# 검색 방법 
/ 전진 검색
? 후진 검색

# 검색 후 
n 전진 
N 후진 

# 검색후 문자 하이라이팅 끄기 
:noh
:nohlsearch

치환(Replace) 명령

명령모드에서 퍼센트(%)를 입력하여 문자열을 치환할 수 있습니다.

# old 문자를 new 문자로 변경 
:%s/old/new/g

VI 스크립트 명령어

VI는 자체 스크립트를 이용할 수 있습니다. 이 중에서 몇 가지만 알아보겠습니다.

# 파일 타입 확인 
:echo &filetype

# 현재 사용중인 vim의 정보 
:echo $VIMRUNTIME

문법 강조

문법 강조는 VI에 설정된 syntax파일을 이용하여 제공합니다. EX 모드에서 syntax on 명령을 이용하여 문법 강조 기능을 켜고 끌 수 있습니다. 사용자가 설정 파일에 파일 타입과 문법을 연결하여 신규 설정을 추가할 수 있습니다.

# EX 모드에서 입력 또는 .vimrc 파일에 입력 
syntax on

# 하단의 위치에 문법 파일 존재, 각 언어의 설정을 확인 가능 
$ ls -alh /usr/share/vim/vim80/syntax

# 다음의 설정을 .vimrc 파일에 추가 
# hive hql파일의 문법 설정을 sql로 설정 
au BufNewFile,BufRead *.hql                   setf sql

자동 들여 쓰기

자동 들여 쓰기 기능을 이용하여 스크립트를 작성할 때 들여 쓰기를 수동으로 맞추지 않고 자동으로 적용할 수 있습니다.

# 들여쓰기 설정 .vimrc 파일에 입력 
set autoindent

# Tab 너비, 자동 인덴트할 때 너비
set ts=4 
set shiftwidth=4 

줄번호 추가

줄번호를 추가하여 현재 위치를 확인할 수 있습니다.

# 줄번호 추가 .vimrc 파일에 입력 
set nu

테마 설정

사용자가 테마를 설정할 수 있습니다. 기본적으로 설치된 테마는 다음의 위치에서 확인할 수 있습니다. 해당 위치에 설치된 파일의 이름으로 설정하면 됩니다. 사용자가 테마 파일을 추가할 수도 있습니다.

# 테마 설정 
colorscheme jellybeans

# 기본 테마 확인 
$ ls -l /usr/share/vim/vim*/colors/

# 다음의 위치에 외부에서 설정한 테마 파일을 복사하여 설정 가능 
$ ~/.vim/colors

VI 설정

VI는 기본 전체 사용자의 공통 설정 파일과 사용자 개별 설정 파일을 이용하여 환경설정을 할 수 있습니다. .vimrc 설정 방법에서 상세한 설정 방법을 알 수 있습니다.

  • 전체 사용자
    • /etc/vimrc
  • 사용자 설정
    • ~/.vimrc

기본 VI 설정

다음과 같이 사용자 설정을 추가하여 작업을 좀 더 편리하게 진행할 수 있습니다.

# 자동 들여쓰기 
set autoindent
# 줄번호 추가 
set nu
# 문법 설정 연결 
au BufNewFile,BufRead *.hql                   setf sql

참고

  • vi 에디터 사용법
  • 초보자를 위한 vim 입문서
  • Vim Cheat Sheet
반응형
저작자표시 비영리 동일조건 (새창열림)

'리눅스' 카테고리의 다른 글

[리눅스] 프로세스의 CPU, 메모리 확인  (0) 2020.06.11
[리눅스] 시스템의 CPU, 메모리 사용량 확인  (0) 2020.06.11
[linux] 리눅스 커맨드 라인 인터페이스에서 홈(Home), 엔드(End)키로 커서 이동시 영어 문자가 대문자로 변경되는 경우 수정  (0) 2020.02.26
[error] error: command 'gcc' failed with exit status 1 오류  (0) 2019.09.10
[리눅스][vi] vi 편집기에서 모든 라인을 지우는 법  (0) 2017.05.08
'리눅스' 카테고리의 다른 글
  • [리눅스] 프로세스의 CPU, 메모리 확인
  • [리눅스] 시스템의 CPU, 메모리 사용량 확인
  • [linux] 리눅스 커맨드 라인 인터페이스에서 홈(Home), 엔드(End)키로 커서 이동시 영어 문자가 대문자로 변경되는 경우 수정
  • [error] error: command 'gcc' failed with exit status 1 오류
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    다이나믹
    SPARK
    HDFS
    build
    oozie
    yarn
    정올
    k8s
    hbase
    하이브
    Python
    airflow
    HIVE
    백준
    오류
    mysql
    emr
    하둡
    AWS
    S3
    파이썬
    java
    Linux
    Tez
    Hadoop
    알고리즘
    nodejs
    error
    bash
    ubuntu
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[linux][vi] VI 사용 방법
상단으로

티스토리툴바