기본 콘텐츠로 건너뛰기

Linux Command 6

square72_blue.gif vi 에디터 사용법

1. vi 시작하기: vi filename

2. vi 끝내기: :w (save하기, 끝나지는 않는다.)

:q (빠져나옴,고치지 않았을때)

:wq (또는 ZZ) (save하고 빠져나옴)

:q! (고친 것을 포기하고 빠져나옴)

3. vi의 두 모드(mode)

1) 편집모드

- 화면 맨 아랫쪽 첫째 column에 ":"가 없는 경우를 말함. (vi를 시작했을 때 상태 그대로가 편집모드이다.)

- 대부분의 명령은 알파벳 글자 하나를 누름으로써 수행된다.

- 편집모드에는 string의 수정(R, replace), 삽입( i 또는 a, insert), 대치(s, substitution)모드 등이 별개로 존재하고 각 모드는 Esc키를 누름으로써 끝난다.

2) Command모드

- 편집모드에서 사용자가 ":"(콜론)을 쳐서 화면 맨 아랫쪽 첫째 column에 ":"가 있는 경우를 말함.

- command모드는 ":"를 쳐서 시작하고 엔터를 침으로써 끝이 난다.

- 이후 ":"로 시작되는 명령어는 모두 command모드를 의미한다.

4, cursor의 이동

    명 령

    설 명

h

l

k

j

0

$

w

b

:n 엔터

G 또는 :$ 엔터

'←'와 같다. *되도록 화살표키를 사용하지 말고 "h,l,k,j"를 사용하도록 !

'→'와 같다. ( 키보드에서 손을 떼지않고 cursor를 이동시킬 수 있고

'↑'와 같다. 터미날 Type에 구애받지 않는 vi 장점 중의 장점 )

'↓'와 같다.

cursor가 있는 현재 line의 첫 column으로

cursor가 있는 현재 line의 맨끝으로

다음 단어로(forward)

이전 단어로(backward)

파일의 n번 line으로

파일의 마지막 line으로

* Command모드에서 "."는 현재 line을, "$"는 마지막 line을 뜻한다.

5. 화면의 이동

명 령

설 명

CTRL-f

CTRL-b

CTRL-d

CTRL-u

화면을 한 페이지씩 앞으로(forward) 이동

화면을 한 페이지씩 뒤로(backward) 이동

화면을 앞으로(downward) scroll 이동

화면을 뒤로(upward) scroll 이동

6. 수정 & 삽입 & 삭제

    명 령

    설 명

r

R

현재 cursor 위치의 한 글자를 뒤이어 치는 한 글자로 바꿈.(그런다음 자동으로 편집모드로 복귀)

수정모드 시작 (현재 cursor 위치부터 Esc키를 누를 때까지 입력하는 글자들로 계속 덮어 씀)

i

a

삽입모드 시작 (현재 cursor 위치에 Esc키를 누를 때까지 입력되는 글자들을 삽입)

삽입모드 시작 (현재 cursor 뒤로 Esc키를 누를 때까지 입력되는 글자들을 삽입)

s

대치모드 시작 (현재 cursor 위치의 한 글자를 Esc키를 누를 때까지 입력되는 글자들로 대치)

x

D

dd

ndd

:n,m d 엔터

:.,m d 엔터

현재 cursor 위치의 한 글자를 지운다.

현재 line의 cursor 이후의 글자들을 지운다

현재 cursor가 있는 line을 지운다.

현재 line부터 n개의 line을 지운다.

n번 line에서 m번 line까지 지움.

현재 line에서 m번 line까지 지움.

* vi에서는 지워진 내용을 임시기억장소(buffer)에 저장하므로 지운 내용을 "p" 또는 "P"로 다른 곳에 복사할 수 있다. (7. 복사 & 이동 참조)

7. 검색 및 치환 (Search & Replace)

    명 령

    설 명

/string 또는 :s/string 엔터

string을 찾는다

- 다음 occurrence는 "n"(forward) 또는 "N"(backward)으로 찾는다.

:n,m s/string1/string2 엔터

:n,m s/string1/string2/g 엔터

:n,m s/string1/string2/gc 엔터

n번 line에서 m번 line까지의 "string1" 중 각 line에서 첫 번째로 나오는 "string1"만을 "string2"로 바꿈.

n번 line에서 m번 line까지의 "string1" 모두를 "string2"로 바꿈.

n번 line에서 m번 line까지의 "string1" 모두를 "string2"로 바꾸되

각각에 대해서 confirm을 한다.(y/n 물어봄.)

8. 복사 & 이동

    모드

    명령

    설 명

편집

모드

yy 또는 Y

nyy 또는 nY

dd

ndd

p

P

현재 line을 버퍼에 저장.

현재 line부터 n개의 line을 버퍼에 저장

현재 line을 지우고 그 내용을 버퍼에 저장.

현재 line부터 n개의 line을 지우고 내용을 버퍼에 저장

버퍼의 내용을 현재 line뒤에 붙인다.(paste)

버퍼의 내용을 현재 line앞에 붙인다.

* vi에서는 임시기억장소(buffer,버퍼)를 사용하므로 어느 한 부분을

버퍼에 넣어 "p" 또는 "P"로 이동하거나 복사할 수 있다.

( 버퍼는 다른 내용이 들어가면 그 이전 내용은 지워진다. )

command

모드

:n1,n2 y

:n1,n2 t n3

:n1,n2 m n3

n1번 line에서 n2번 line까지를 버퍼에 저장.(버퍼내용을 쓸때는 "p 또는 P")

n1번 line에서 n2번 line까지를 n3번째 line 뒤에 복사

n1번 line에서 n2번 line까지를 n3번째 line 뒤로 이동(move)

9. 꼭 알아두어야 할 것들

1) vi에서의 모든 명령은 소문자,대문자를 구별한다.

2) 수정(R), 삽입(i 또는 a), 대치(s) 등의 "string을 입력"하는 작업이 끝나면 반드시 Esc키를 눌러서 각 모드(수정,삽입,대치모드)가 끝났으며, 그 다음에 치는 글자는 '편집모드의 명령어'임을 vi에게 알려주는 것을 잊지말도록 !

3) 편집모드의 명령 앞에 숫자가 입력되면 그 숫자만큼 명령을 반복하라는 뜻이 된다. (예)글자"a"를 삽입하는 경우 명령은 "ia Esc"이지만, 만약에 "13ia Esc"라고 치면 "a"가 13개 삽입된다.

4) 그밖의 중요한 명령들.....

이전 명령의 반복

(편집모드에서) "."를 친다.

- vi 최대의 장점, vi-Editng실력은 "."활용에서부터 !

이전 명령의 취소(undo)

(편집모드에서) "u"를 친다.

n번째 column으로 가고싶을때

n| ( n값이 현재 line 끝의 column을 초과하면 cursor는

line 끝에 머문다. )

현재 line과 다음 line을 합할 때(join)

J

현재 line을 분리할 때

분리하고자 하는 위치에 "엔터"를 삽입(insert)한다.("i"명령이용)

line번호를 보면서 작업할려면? auto-indent를 하고 싶을 때

right margin을 주고 싶을 때

현재가 어떤 모드인지 display

괄호가 잘 match되는지?

( command모드에서 setting을 한다. ":set all 엔터"하면 모든 option이 출력된다.)

:set nu 엔터 (없앨때는 :set nonu 엔터)

:set ai 엔터 (없앨때는 :set noai 엔터)

:set wm=8 엔터 (right margin 8 column)

:set showmode 엔터

:set showmatch 엔터

* c-shell을 사용하는 system이라면 아래와 같이 "EXINIT"이라는

environment변수를 설정하여 미리 vi를 setting 할 수 있다.

% setenv EXINIT 'set nu ai wm=8 showmode' 엔터

현재 편집 중인 파일이름이 무엇이며 총 line수는 얼마인지?

: f 엔터 또는 CTRL-g

n번째 line에서 m번째 line까지를 다른 이름의 파일로 저장하고 싶을때

:n,m w filename 엔터 ( 이미 filename이 있는 경우에 덮어쓰는 경우라면 :n,m w! filename 엔터 )

다른 파일을 불러올 때

:re filename 엔터 (현재 line 뒤에 붙는다)

댓글

익명님의 메시지…
yeah... attractive style :))
익명님의 메시지…
좋은자료 감사합니다..

이 블로그의 인기 게시물

Ubuntu (Kubuntu) 에 desktop 파일 만들기

Package 관리자등을 통해 직접 Repository 에 있는 Application 을 설치하는 경우에는 필요한 경로와 파일, Category 로 분류된 Icon 등록 등이 자동적으로 이루어지나 firefox, eclipse 등 새로운 버전을 새로 설치할 경우, 다음과 같은 절차를 통해 시작메뉴에 등록시킬 수 있다. 다음은 eclipse-SDK-3.6-linuxx-gtk.tar.gz 을 받아 설치 등록하는 것을 예로 든다. 1. 다운받은 파일을 /usr/lib에 압축해제한다. (물론, super user 계정으로 실행해야 한다.) 2. 보통의 경우, /usr/bin Directory 는 PATH 에 물려 있으므로 다음과 같은 실행 파일을 만들어 놓는다. # cd /usr/lib # chmod +x eclipse # cd /usr/bin # sudo nano eclipse eclipse 파일에는 아래의 내용을 입력하여 넣는다. export ECLIPSE_HOME="/usr/lib/eclipse" $ECLIPSE_HOME/eclipse $ * # sudo chmod 755 eclipse 3. Desktop Menu 에 추가하려면 # cd /usr/share/applications # sudo nano eclipse.desktop [Desktop Entry] Encoding=UTF-8 Name=Eclipse Comment=Eclipse IDE Exec=eclipse Icon=/usr/lib/eclipse/icon.xpm Terminal=false Type=Application Categories=GNOME;Application;Development' StartupNotify=true 이렇게 입력한 파일을 저장하면, 시작메뉴 > 개발 > Eclipse 아이콘이 생성되어 메뉴에서 직접 실행할 수 있게된다.

STM32CubeIDE 한글 주석 깨짐 문제 해결

STM32CubeIDE 는 JAVA로 프로그램된 eClipse CDT 프레임워크 기반으로 제작된 소프트웨어 이다. 아래의 내용은 STM32CubeIDE 개발 환경에서,  시스템 환경을 변경하기 위해  Pinout 등을 수정하여  Device Configuration Tool Code Generation (IOC File) 을 수행하면 수정된 코드가 자동 생성된다. 이 때, 소스 상의 한글 주석이 깨지는 문제점을 해결하는 방법이다. JAVA의 File Encoding 문제이며, 나는 소스파일을 UTF-8로 encoding 하도록 수정하였다. 다음의 순서로 진행한다. 1. 메뉴 Window > Preferences > Workspace - 하단의 Text file encoding을 Other 리스트 중에서 UTF-8을 선택한다. - Apply and Close 한다. 2. 탐색기 > 내 PC > 마우스 우측 클릭 > 팝업 메뉴에서 "속성" > 고급 시스템 설정 - 시스템 속성 창이 뜨면 "고급" 탭 하단의 "환경 변수" 클릭 - 사용자 변수에 "새로 만들기" 버튼을 눌러 변수 이름 : JAVA_TOOL_OPTIONS 변수 값 : -Dfile.encoding=UTF-8

ubuntu 또는 kubuntu 에서 Sun Java JDK 1.6 설치

1. 인터넷 브라우저를 열어, SDN Home 의 Download Center 에서 Download Java SE Development Kit 6u21 for Linux, Multi-language 를 실행한다. 2. jdk-6u21-linux-i586.bin 이 저장되면, 3. 터미널 창을 열어 다음을 실행한다. 4. 압축파일이 저장된 Directory 로 이동한다. snjee@snjee-kubuntu:~$ cd setupapps snjee@snjee-kubuntu:~$ sudo mv jdk-6u21-linux-i586.bin /usr/local/ snjee@snjee-kubuntu:~$ sudo chmod a+x /usr/local/jdk-6u21-linux-i586.bin snjee@snjee-kubuntu:~$ sudo ./jdk-6u21-linux-i586.bin [아래는 압축이 풀리고 마지막에 표시되는 Comment 부분이다.] Product Registration is FREE and includes many benefits: * Notification of new versions, patches, and updates * Special offers on Sun products, services and training * Access to early releases and documentation Product and system data will be collected. If your configuration supports a browser, the Sun Product Registration form for the JDK will be presented. If you do not register, none of this information will be saved. You may also register your JDK later by opening the register.html file (l...