본문 바로가기

컴퓨터/Ubuntu

vi, vim 사용법

vi와 vim의 차이

  vi는 리눅스에 기본적으로 설치돼있는 문서편집기이다. 그런데 딱 기본 기능만 들어있어서 사용하기 불편하다. 그래서 vi의 발전 모델인 vim을 설치해줘야 한다. 앞으로는 그냥 둘 다 vi 로 통칭한다.

vim 설치
sudo apt install vim-gtk
vi 탐색기 실행

 

vi ./
vim 기본설정 파일 작성

  vim의 기본설정은 .vimrc 라는 파일에 작성한다. 이 파일은 홈디렉토리에 존재한다.

cd ~
vi .vimrc
vim 기본설정 하기

  .vimrc 파일에 필요에 따라 아래 내용을 작성하고 저장한다. 

syntax on
set number "줄번호를 표시한다.
set tabstop=2 "탭키를 누르면 공백 2칸씩 입력된다.
set shiftwidth=2 "들여쓰기가 공백 2칸으로 설정된다.
set mouse=a "마우스로 커서 이동을 허용한다.
set smartindent "들여쓰기를 자동으로 해준다.

※ 위의 설정은 vim 실행후에 명령어로도 설정할 수 있다.

숫자 키패드 사용하기

1. 현재 사용되고 있는 터미널 환경 확인

env | grep TERM

※ 대부분 「TERM=xterm」 과 같이 결과가 나타난다.

2. 설정

cd ~
vi .vimrc
if &term=="xterm" || &term=="xterm-color"
  set t_Co=8
  set t_Sb=^[4%dm
  set t_Sf=^[3%dm
  :imap <Esc>Oq 1
  :imap <Esc>Or 2
  :imap <Esc>Os 3
  :imap <Esc>Ot 4
  :imap <Esc>Ou 5
  :imap <Esc>Ov 6
  :imap <Esc>Ow 7
  :imap <Esc>Ox 8
  :imap <Esc>Oy 9
  :imap <Esc>Op 0
  :imap <Esc>On .
  :imap <Esc>OQ /
  :imap <Esc>OR *
  :imap <Esc>OI +
  :imap <Esc>OS -
endif

[모드 변경]

  vim에는 「내용 입력모드」와 「커서 이동모드」와 「명령어 입력모드」가 있다. 

  * 커서 이동모드 → 내용 입력모드

    -현재칸 삽입: i
    -현재칸 수정: s
    -다음칸 삽입: a
    -다음줄 삽입: o

  * 내용 입력모드 → 커서 이동모드

    ESC키를 누른다.

  * 커서 이동모드, 내용 입력모드  명령어 입력모드

    ESC키를 누르고 콜론(:)을 적고 명령어를 입력한다.

[커서 이동]

  * 제일 아랫줄의 앞칸으로: G
  * 제일 윗줄의 앞칸으로: gg
  * 한 칸 왼쪽으로: h
  * 한 칸 오른쪽으로: l(소문자 '엘')
  * 한 줄 위쪽으로: k
  * 한 줄 아래쪽으로: j
  * 같은 줄 가장 뒤칸으로: $
  * 같은 줄 가장 앞칸으로: ^
  * 특정 줄번호로 이동: 줄번호 → Shift+G

[선택]

  * 한 칸씩 선택: v
  * 한 줄씩 선택: V

[편집]

  * 현재 칸 삭제: x
  * 선택 복사: y
  * 선택 잘라내기: d
  * 현재 줄 잘라내기: dd
  * 다음 칸에 삽입해서 붙여넣기: p
  ※ Putty 붙여넣기: Shift+우클릭

[저장]

: w

[종료]

: q

[저장 후 종료]

: wq

※ 명령어를 연속해서 적으면 두가지 이상의 명령을 동시에 실행시킬 수 있다.

[저장 않고 종료]

: q!

[문자열 찾기]

  * 커서 기준으로 위에서 아래로 찾기

: /문자열

  * 커서 기준으로 아래에서 위로 찾기

: ?문자열

  * 계속 찾기

  문자열을 찾은 후, Enter를 쳐서 일반 모드로 이동후에 'n' 키를 누르면 뒤로 다음 문자열을 찾고 'N' 키를 누르면 앞으로 다음 문자열을 찾는다.

1. 문자열 찾아 바꾸기

:시작줄,끝줄s/찾을패턴/바꿀문자열/옵션

1.1. 시작줄, 끝줄은 행 번호 또는 행 표시로 지정한다.

행 표시 의미
. 현재 커서가 있는 행
$ 마지막 행
% 문서 전체

2. 찾을패턴: 문자열을 적어도 되고 정규표현식을 적어도 된다.

3. 바꿀문자열: 정규표현식은 안 된다. 문자열만 된다.

4. 옵션

1) g: global 한 줄에 패턴이 여러 번 나오면 모두 바꾼다. 지정하지 않으면 첫번째 패턴만 바꾼다.

2) i: ignore case 대소문자 구분을 하지 않는다.

3) c: confirm 검색된 모든 문자열에 대해서 바꿀지 확인한다.

예)

: %s/대상패턴/바꿀문자열
: 2, 20s/대상패턴/바꿀문자열

※ 만약 검색할 문자열에 「/」가 포함되면, 「\/」로 쓴다.

[정규표현식]

1. []

대괄호 사이에 존재하는 문자들 중 하나에 일치한다.

I love you.
Love is peace.
[Ll]ove

2. [x-y]

대괄호 사이 범위 내의 한 문자와 일치한다.

I pick you.
But you kick me.
[a-z]ick

3. ^

행의 시작을 나타낸다. vi편집기에서 문자열은 개행까지를 한 행으로 판단한다.

I love you.
love is 
^love

대괄호 안에 들어가면 부정을 의미한다.

love, #ove, 3ove
[^a-z]ove

4. $

행의 끝을 나타낸다. 

I love you.
Peace is love.
love.$

5. .

하나의 모든 문자를 나타낸다.

love, hove, sovl
.ov.

6. 공백*

앞에 공백이 0개이상 있는 것을 찾음.

 love
  love
i  love
공백*love

*공백도 같은 원리로 가능

love*공백

7. \<, \>

단어의 시작과 끝

glove
loved
\<love
glove
loved
love\>
glove
loved
love
\<love\>

8. 문자\{숫자\}

문자가 정확히 몇개 있음을 나타낸다.

god
good
o\{2\}

9. 문자\{숫자, \}

최소 숫자번 반복한다.

10. 문자\{숫자1, 숫자2\}

최소 숫자1번 최대 숫자2번 반복한다.

[화면 분할]

  * 수평분할 

: sp 파일명

  * 수직분할 

: vs 파일명

  * 분할한 창 모두 종료

: qa

[탐색기]

  * 탐색기 열기

: e ./

  * 새 파일 만들기

%

  * 새 디렉토리 만들기

d

줄번호 없애기

:set nonumber

클립보드에 복사하기

선택 후 "+y

 

 

'컴퓨터 > Ubuntu' 카테고리의 다른 글

010. wget 사용법  (0) 2021.10.28
006. 데비안 기반 리눅스 사용법(우분투, 라즈비안 등)  (0) 2021.10.26
라즈비안 Raspbian 설치  (0) 2021.10.22
우분투 Ubuntu 설치  (0) 2021.10.04
Ubuntu shell  (0) 2021.06.29