티스토리 뷰

1강 : vim editor

vi : UNIX / Linux에서 가장 많이 사용되는 에디터

1976년 BSD의 Billy Joy가 개발.

ed(line editor) : 옛날 에디터. 한 라인만 볼 수 있었다.

 

vim 설치 명령어

RH계열 : yum -y install vim-enhanced

Debian계열 : sudo apt -y install vim

우분투는 Debian계열이므로 아래 명령어를 실행하면 아래와 같이 설치가 진행된다. 문제없이 설치 완료.

vim mytext.txt

mytext.txt가 있으면 해당 파일을 열고, 없으면 새로 파일을 열어서 저장할 때 새로 저장.

find . -name "*.txt" | vim -

. : 현재 디렉토리에서 찾아라.

| : 파이프. 앞내용이 뒤로 전달됨. 이 경우, 앞의 stdout을 뒤 vim의 stdin으로 전달한다.

vim 뒤의 - : stdin을 의미.

 

vi의 모드

<전통>

normal mode : 일반 모드

insert mode : 입력 모드

command-line mode : 명령행 모드

<추가>

visual mode : 비주얼 모드

 

vi에디터를 실행하면 normal mode로 진입한다.

문서에 입력하기 위해서는 a, i, o, A, I, O, R키를 입력하면 insert mode로 갈 수 있다.

insert모드에서 Esc키를 눌러 normal 모드로 되돌아 간다.

: 콜론키를 입력해서 파일 저장 등의 작업을 수행하는 command line 모드로 진입한다.

command line모드에서는 Esc 또는 작업을 실행하여 normal 모드로 되돌아 간다. 

h, j, k, l : 화살표키. 왼,아래, 위, 오른

[#]gg : #행으로 이동. []안은 옵션. 있어도 되고 없어도 됨. #이 생략되면 1을 의미한다.

[#]G : #행으로 이동. []안은 옵션이라 생략되면 마지막 행을 의미한다.

:# : #행으로 이동.


2강

vi에서의 삭제 = 임시 버퍼에 잘라내기

x : 커서에 위치한 문자 삭제

dd: 현재 행 삭제

J : 아래 행을 현재 행의 끝에 붙임. 아래 행의 앞부분 공백은 제거된다.

p : 현재 행에 붙여넣기. put. 소문자 p

P : 현재 행의 위쪽에 붙여넣기. 대문자 P

yy : 현재 행을 레지스터에 복사한다.

u : undo 기능. 바로 이전에 행한 명령 한 개를 취소한다.

Ctrl + R : redo 기능. 바로 이전에 취소했던 명령을 다시 실행한다.

:[#1,#2]d : #1부터 #2행까지 삭제.

:[#1,#2]y : #1부터 #2행까지 복사.

#1, #2를 둘 다 입력 안하면 현재 행

#2대신 $를 입력하면 마지막 행까지

%는 문서 전체. %는 1, $와 동일하다.

.은 현재 행을 의미.

+1, -5처럼 현재 행 기준으로 +,-를 입력할 수도 있다.

:#pu : #번째 행에 레지스터의 내용을 붙여넣는다.

 

visual mode 중요함.

마우스의 drag기능을 대신한다.

v : 소문자 v. 현재 커서 위치에서 블록 지정.

V : 대문자 V. 현재 커서가 위치한 행에서 무조건 행 단위로 블록 지정.

Ctrl + V : visual block mode. 박스형태로 블록 지정.

gg : 문서의 맨 위로

^ : 행의 맨 앞으로

Ctrl + V : visual block mode

G : 맨 아래로 내려오는 것.

I : 입력모드로 전환.

<ESC><ESC> : 실행.

gg^<CTRL-V>GI0000<ESC><ESC> 실행결과:

gv : previous highlighted text영역 불러오기.


3강 

vim 클립보드

vi : vi호환의 vim. vim종류 중 가장 적은 기능. compact vim. tiny vim.

vim : 일반적인 vim. 빔이라고 읽음. enhanced vim. 프로그래밍에도 많이 사용된다.

vimx : 가장 많은 기능을 가진 vim. vim + clipboard, X window clipboard 기능이 포함됨.

vim-gnome 설치 명령어 : sudo apt -y install vim-gnome

vim-gnome 제거 명령어 : sudo apt -y --auto-remove remove vim-gnome

~/.vimrc 파일에서 아래를 추가하는 clipboard설정이 필요하다. ~/.vimrc파일은 vi ~/.vimrc 를 실행하면 들어갈수있다.

" clipboard settings : Copy/Paste/Cut
if has('unnamedplus')
  set clipboard=unnamed, unnamedplus
endif

이 설정을 하고 나면 vim에서 복사한 것을 gedit에서 붙여넣기할 수 있다.

 

명령행모드 옵션

set ai : auto indent 자동 들여쓰기

set ai cindent : C언어 스타일의 들여쓰기

ts=value : tabstop. 화면에 표시될 탭 크리를 value로 지정.

set fencs=ucs-bom,utf-8,korea,latin1 : 지원할 파일 인코딩 방식 리스트. 여러 개 지정시 공백없이 콤마로 구분한다.


4강

vim manual찾는 방법

command line mode에서 help <keyword> 입력

입력모드에서 키워드는 help i_<keyword>

명령행모드에서 키워드는 help :_<keyword>

비주얼모드에서 키워드는 help v_<keyword>

:q : 닫기

^w^w ( = Ctrl+w+Ctrl+w ): 위, 아래 창으로 이동. move cursor to window below/right of the current one. 시계 반대방향으로 이동.

^] (= Ctrl + ] ) : 키워드에서 해당 키워드 보고 싶을 때. jump to the definition of the keyword under the cursor.

^t : 다시 돌아갈 때. jump to older entry in the tag stack.

하다가 모르는 게 있으면 manual부터 보기. google 검색은 틀린 정보가 너무 많다.

하나의 터미널에서 hello.c를 연 상태에서

    다른 터미널에서 같은 파일을 열려고 하면, .파일이름.swp 파일에 접근해서 해당 파일을 저장 후 나중에 원본에 병합한다.

파일을 중복해서 오픈한 경우, processID를 가장 먼저 확인. still running은 다른 vim이 열고 있음을 의미한다.

어느 쪽이 먼저 저장하느냐에 따라 파일이 깨지기도.

이런 경우에는 그냥 나가는 것이 가장 좋다. (Q)uit, (A)bort 추천

still running이 없는 경우, 이전의 작업 프로세스가 끝난 경우

이때 사용하는 것이 (R)ecover 이다.

이후에 같은 메세지가 또 나오면 (D)elete it 실행하여 swap 삭제.


5강 : formatting, 

center, left, right정렬. 기본 = left정렬

 

find기능. 문자 1개를 검색

 

 

일반모드에서 문자열 검색

/string : string을 전방탐색한다.

?string : string을 후방탐색한다.

n : 다음 탐색 결과 찾는다. 후방이면 후방 다음, 전방이면 전방 다음

N : n과 반대방향으로 다음 탐색.

* : 현재 커서에 위치한 단어를 전방탐색

# : 현재 커서에 위치한 단어를 후방탐색

% : 괄호 짝 찾아줌.

/\cstring : ignore case. 대소문자 상관않고 문자열 검색.

[a-g]re : a부터 g까지 중에 1개와 re단어의 조합을 찾는다. 결과: are, gre, dre, ...

set hls : 찾은 단어 색칠해줌

/\<string\> : string을 후방 검색하는데, 독립된 하나의 단어만 검색한다. ex. string을 검색하면 strings는 검색이 안됨.

/\m[string] : [string]을 찾고 싶은 경우. square bracket으로 묶인 문자열을 잡고 싶은 경우. \m은 magic key를 무시하는 것.

 

Alt + . : 이전 명령어의 마지막 가져오는 명령어.

 

문자열 교체 substitute

sed의 기능이 import된 것

:[range]s/찾는 문자열/교체할 문자열/옵션

separator는 slash(/)를 주로 사용되는데, 다른 문자를 써도 무방하다. 콤마(,)를 써도 됨.

만약 찾고자 하는 문자열에 슬래시가 이미 들어가 있다면 콤마를 쓰면 깔끔함.

예를 들어, /home/linuxer 를 /home/unixer로 교체하고자 한다면

:%s,/home/linuxer,/home/unixer,g 를 입력한다.

일반문자 뿐 아니라 특수문자를 교체할 수도 있다.

UNIX는 LF : Line Feed로 엔터를 구현.

Windows는 CR+LF : CarriageReturn + Line Feed로 구현.

그래서 윈도우의 파일을 리눅스로 가져가면 제대로 안 읽히는 문제가 발생.

^V문자열^M을 또는 ^V문자열^Enter

실제로는 :set ff=dos 또는 :set ff=unix를 사용한다.

file filename.txt로 파일 형태를 확인하면 with CRLF line terminators라는 문구가 함께 출력된다.

윈도우 파일을 유닉스로 가져오면, 위 변환을 안해도 잘 읽힌다.

하지만 유닉스 파일을 윈도우로 가져갈 때는 :set ff=dos로 꼭 변환을 해줘야 한다.

 

아스키코드를 코드값으로 입력하는 경우

:wq로 저장

 

 

숫자 증감


6강 : file관련 기능

종료

:q[!] : 현재 창을 강제 종료. 저장하지 않고 종료할 때.

:wq : 현재 창을 저장하면서 종료.

저장

:w

:sav file : 현재 파일을 다른 이름으로 저장한다. 편집중인 파일도 새로 저장된 파일로 교체된다.

:up : 변경된 점이 있는 경우만 ":w" 명령어 실행.

:x : up + quit. 변경점이 있는 경우만 저장 및 종료

ZZ : 일반모드에서 :x를 실행.

^6 : 이전 버퍼로 돌아가는 방법.

 

복수의 파일 다루기

분할창 : 파일을 분할해서 두 개의 창으로 보여주는 것.

Ctrl-w s 또는 :sp [file] : 현재 파일을 두개로 수평 분할.

Ctrl-w v 또는 :vs [file] : 창을 수직 분할하여 두 개의 파일을 동시에 보여줌. 두 개의 파일을 비교할 때 사용.

vi -o file1 file2 실행하면 두 개의 파일을 분할창으로 열 수 있다. -o 또는 -O 를 사용.

 

diff기능

vimd -d file1 file2 : file1과 file2를 비교.

do : diff다른 것을 오른쪽으로 가져가기?

dp : 다른 것을 왼쪽으로 가져오기?

~ : 대소문자 전환

 

tab page기능

분할 창은 분할할 때마다 원래 창의 크기가 줄어드는 단점.

vim -p file1 file2 file3 : 처음 실행할 때부터 여러 탭으로 여는 옵션.

[#]gt : 

보통 키맵을 사용한다.

 

gf : 해당 커서의 파일로 바로 이동.

^6 : 원래 버퍼로 다시 이동.


7강 : 

vimium 설치하면 chrome에서 vi에서 사용했던 기능을 전부 사용할 수 있다.

f명령을 이용해서 url에 

d : 반페이지씩 downward

Z : 맨 아래 페이지로 이동

사파리는 vimari

 

file encodings (=> fences)

BOM이 매직 코드 역할.

실습

vim winhangul.txt 를 실행하여 아래와 같이 한글과 영어를 섞어서 텍스트를 입력한다.

:set ff=dos

:set fenc=korea

:wq

위 명령어를 실행한 후에 나감.

file 명령어로 이용해서 정보를 확인하면

vi 이용해서 읽으면 아래 처럼 나온다.

이것은 vi ~/.vimrc 에 들어가서

 

 

소스코드에 문제가 없는데, 예약어를 읽을 수 없다. 이런 에러가 뜬다면 인코딩을 검사

fileformat과 fileencoding확인.

 

word forward/backword

ab, ia기능

ia : insert모드에서만 작동하는 기능.

ca : command line mode에서 한글 상태 오타를 변환할 수 있다. ex. ㅈ를 w로, ㅈㅂ를 wq로 변환.

 

nmap

 

들여쓰기 다시 하기. re-indenting

맨 위에서 =G 를 입력하면 re-indenting해준다.

:set et ts=4

:ret

하면 탭문자를 4개의 공백으로 바꿔줌.

 

^N : 낱말 자동 완성 기능. 소스코드에서 변수명 자동완성 등.

^X^F : 파일이름 전체 알려줌.

 

vimrc를 자동으로 만들어주는 사이트.

vim-bootstrap.com/

 

Vim Bootstrap

 

vim-bootstrap.com

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함