기본 콘텐츠로 건너뛰기

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 아이콘이 생성되어 메뉴에서 직접 실행할 수 있게된다.

우분투에 연결된 프린터, 스캐너를 윈도우즈에서 공유하여 사용하는 방법

[Sharing Printer and Scanner through Network] 전제조건 ( 사용환경 ) 복합기가 연렬되어 프린터와 스캐너 서비스를 공급할 대상 : Ubuntu 16.10 (Yakkety Yak) 64bit 공유된 프린터와 스캐너를 사용할 대상 : Windows 10 64bit 사용 중인 복합기 : Canon-MX318 (PIXMA MX310 Series) Server-side setup $ sudo apt update $ sudo apt-get install cupsys cupsys-client xinetd $ sudo apt-get install samba smbfs swat $ sudo dpkg-reconfigure xinetd $ sudo apt install cups cups-pdf xsane sane-utils xscanimage gscan2pdf $ sudo adduser saned lp $ sudo gedit / etc/cups/ printers.conf 웹브라우저의 http://snjee-nb2-ubuntu:631 에서 설정된 내용들이 표시된다. $ sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original $ sudo chmod a-w /etc/cups/cupsd.conf.original $ sudo gedit /etc/inetd.conf sane-port stream tcp nowait saned.saned /usr/sbin/saned saned $ sudo touch /etc/xinetd.d/saned $ sudo gedit /etc/xinetd.d/saned service saned { socket...

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