vi 편집기 사용법

Unix/Linux 2013. 3. 14. 15:54

탭 간격 같은 환경 변수를 설정하기 위해서는

# vi ~/.exrc

에 설정값들을 저장해 놓는다.

ex) set tabstop=4
     set ai   

 


(1) 사용법
   vi [option] [filename]
(2) option
   -c  : -c옵션은 시작하면서 어떠한 명령을 실행한다.
   -r  : 손상된 파일을 복구할 때 쓴다. 파일을 편집하던 중 갑작스런 사고 등으로 인해 시스템이 다운되었을 경우 대개 이 명령으로 복구 할 수 있다.
   +n  : 파일을 열면서 n번째 줄로 커서를 이동시킨다.
   +   : 파일을 열면서 마지막 줄에 커서를 이동시킨다.
   -wn : 기본적인 윈도우 크기를 n라인으로 한다.(기본값은 20라인)
(3) 사용예
   1) vi                 
       => 빈문서로 시작한다.
   2) vi index.html      
       => 주어진 파일(index.html) 이름으로 편집을 시작한다. 만약 파일이 존재하지 않으면 새로  만들게 된다.
   3) vi +15 index.html   
       => index.html 파일을 열면서 커서를 15번째 줄로 보낸다.
   4) vi -c 15 index.html 
       => -c옵션은 시작하면서 어떠한 명령을 실행하라는 뜻이다. 따라서, -c 15 라고 쓰면 +15 옵션과 동일한 결과를 얻는다.
   5) view index.html     
       => index.html파일을 읽기 전용으로 파일을 연다. 참고로 저장할 때 ':wq!'형식으로 ! 표를 붙이면 읽기전용이라도 저장된다
   6) vi + index.html     
       => index.html파일을 열면서 커서의 위치를 마지막라인에 둔다.
   7) vi +/posein /etc/passwd
    => /etc/passwd 라는 파일을 열면서 posein이라는 문자열이 있는 위치에 커서를 둔다.

3. vi 종료하기
(1) 설명: 모드에 대한 설명이 아래에 나오지만 미리 종료에 대해 설명하면 일단 [ESC]키를 눌러  명령모드로 전환한 후, 필요에 맞게 다음 중 하나의 키워드를 사용하면 된다.
(2) 명령
   :wq => 파일을 저장한 후 종료한다. 같은 명령으로는 ZZ 또는 :x 가 있다.
   :q! => 편집하여 변경된 내용을 저장하지 않고 강제 종료한다.
   :q  => 편집중인 내용이 없는 경우, vi를 종료한다.
   :w  => 편집중인 파일 내용을 저장한다. vi는 종료하지 않는다.

4. vi편집기의 모드
(1) 설명: vi편집기에는 크게 2가지모드로 구분된다. 첫번째는 명령모드(command mode)이고, 두번째는 입력모드(input mode)또는 편집모드라고 한다. 또 명령모드는 다시 일반명령모드와 ex명령모드로 구분된다. 명령모드상태에서 입력명령(i,I,a,A,o,O)을 실행하면 입력모드로 전환된다. 입력모드에서 타이핑한 문자들이 문서에 삽입된다. 여기에서 다시 [ESC]키를 누르면 명령모드로 돌아온다. 명령 모드에서 ':'를 입력하면 화면 아래쪽에 ':'라는 프롬프트가 나타나게 되는 데 이것이 ex명령모드이다.
참고)입력모드 키워드가 위 나열한 것외에 (c,C,s,S,R)등이 있다.

(2) 모드
   1) 명령모드 : vi라고 입력한뒤 처음 접하는 모드
    ㄱ. 커서 이동 명령
       h           : 왼쪽으로 이동
       j           : 아래로 이동
       k           : 위로 이동
       l           : 오른쪽으로 이동
       w           : 다음 단어의 처음으로 이동
       -           : 앞 라인의 첫문자로 이동
       ^           : 라인의 첫 문자로 이동
       $           : 라인의 맨 끝으로 이동
       +           : 다음 라인의 첫문자로 이동
       0(zero)     : 첫번째 열로 이동
       G           : 제일 끝줄로 이동
       nG          : n번째 행으로 이동
       gg          : 파일의 처음으로 이동
       (           : 문장의 처음으로 이동
       )           : 다음 문장의 처음으로 이동
       {           : 문단(paragraph)의 처음으로 이동
       }           : 다음 문단의 처음으로 이동
       H           : 화면의 첫 라인으로 이동
       M           : 화면의 중간으로 이동
       L           : 화면의 끝라인으로 이동
       ctrl+b(back)    : 한 화면 위로 이동
       ctrl+f(forward) : 한 화면 아래로 이동
       ctrl+u(up)      : 반 화면 위로 이동
       ctrl+d(down)    : 반 화면 아래로 이동
       e           : 한 단어 뒤로 이동
       b           : 한 단어 앞으로 이동
       :0(zero)     : 줄의 제일 처음으로 이동
       :$           : 줄의 제일 끝으로 이동
    ㄴ. 편집상태로 진입 : 입력모드로 전환하는 키워드이고 하단에 'INSERT' 등과 같은 문자열이
                         표시된다.
       i   : 현재 커서 위치에 삽입
       a   : 현재 커서 위치 다음에 삽입
       o   : 현재 커서가 위치한 줄의 아랫줄에 삽입
       I   : 현재 커서가 위치한 줄의 제일 앞에 삽입
       A   : 현재 커서가 위치한 줄의 제일 뒤에 삽입
       O   : 현재 커서가 위치한 줄 위에 삽입
       ESC : 명령모드로 재전환
    ㄷ. 복사하기와 붙이기
       Y     : 현재 커서가 위치한 줄을 버퍼에 복사한다.
       yy    : Y와 같다.
       yw    : 현재 커서가 위치한 단어를 버퍼에 복사한다.
       'n'Y  : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 버퍼에 복사한다.
       'n'yy : nY와 같다.
       'n'yw : 현재 커서가 위치한 단어로 부터 뒤로 n개의 단어를 버퍼에 복사한다.
       yh    : 커서의 왼쪽 문자를 복사한다.
       yl    : 커서가 위치한 문자를 복사한다.
       yB    : 커서의 왼쪽 비공백 단어를 복사한다.
       yW    : 커서의 오른쪽 비공백 단어를 복사한다.
       y0    : 커서 왼쪽부터 라인의 처음까지 복사한다.
       p     : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 아래에 붙인다.
       P     : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다.
    ㄹ. 지우기
       x     : 현재 커서 위치의 문자를 지운다.(dh와 동일)
       X     : 커서 왼쪽의 문자를 지운다.(dl과 동일)
       dd    : 현재 커서가 위치한 줄을 지운다. (단어 뒤의 스페이스 포함)
       'n'dd : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 지운다.
       dw    : 현재 커서가 위치한 단어를 지운다.
       db    : 현재 커서의 왼쪽 단어를 지운다.
       'n'dw : 현재 커서가 위치한 단어로 부터 뒤로 n개 만큼의 단어를 지운다.
       dB    : 현재 커서 왼쪽 비공백 단어를 지운다.
       dW    : 현재 커서 오른쪽 비공백 단어를 지운다.
       d$    : 현재 커서가 있는 라인부터 끝까지 지운다.(D와 동일)
       - d0  : 커서 왼쪽부터 라인의 처음까지 지운다.
    ㅁ. 바꾸기
       r    : 현재 위치의 문자를 바꾼다.
       R    : 현재 커서 위치부터 원하는 만큼 다른 문자로 바꾼다.
       cb   : 현재 커서 왼쪽 단어를 바꾼다.
       cw   : 현재 위치의 단어를 바꾼다.
       cc   : 현재 커서가 위치한 줄을 바꾼다.
       c$   : 커서부터 라인의 끝까지 바꾼다.(C와 동일)
       c0   : 커서 왼쪽부터 라인의 처음까지 바꾼다.
       C    : 현재 커서가 위치한 곳으로부터 줄의 끝까지 바꾼다.
      'n'cw : 현재 위치로부터 'n'개의 단어를 바꾼다.
      'n'cc : 현재 위치로부터 'n'개의 줄을 바꾼다.
    ㅂ. 기타
       ctrl+g   : 현재 편집하고 있는 파일의 정보를 보여준다.
       shift+v  : 블록을 지정한다.
       u        : 방금 한 명령을 취소한다.
       U        : 현재 커서가 위치한 줄에 대한 편집 명령을 취소한다.
       .        : 방금한 명령을 되풀이 한다.
       'n'.     : 방금한 명령을 n번만큼 되풀이 한다.
       J        : 현재 줄과 다음 줄을 합한다.
       ZZ       :현재 내용을 저장하고 끝낸다.
       /exp     : 'exp'와 같은 내용을 현재 위치 다음부터 찾는다.
       ?exp     : 'exp'와 같은 내용을 현재 위치부터 위쪽으로 찾는다.
       n        : 앞에서 찾은 내용을 현재 위치 다음부터 찾는다.
       N        : 앞에서 찾은 내용을 반대 방향으로 계속 찾는다.
       >>       : 현재 커서 위치 줄을 오른쪽으로 한 열씩 이동한다.
       <<       : 현재 커서 위치 줄을 왼쪽으로 한 열씩 이동한다.
       ~        : 현재 커서가 위치한 문자의 대소문자를 서로 변환한다.
       ctrl+l   : 화면 다시 그린다.
       !        : vi편집중에 shell명령을 내린다.
   3) ex명령모드 : ex란 초기 유닉스에서부터 쓰이던 line editor이다. vi는 자체 명령어외에
                  ex편집기 명령어를 지원한다. 명령모드에서 ':'누르면 화면 아래쪽에 ':'라는
                  프롬프트가 나타나면서 ex명령모드로 들어간다.
    ㄱ. 명령
       :w              => 현재 내용을 저장한다.
       :w filename     => 현재 내용을 지정된 파일 이름으로 저장한다.
       :w!             => 강제로 덮어쓰기를 한다.
       :q              => 그냥 종료한다. 약간이라도 변경사항이 있으면 종료안된다.
       :wq             => 현재 내용을 저장하고 종료한다.
       :wq filename    => filename 으로 저장하고 종료한다. 새이름으로 저장할 때 쓴다.
       :q!             => 현재 내용을 저장하지 않고 종료한다.
       :e filename     => 새로운 파일을 편집한다.
       :r filename     => 현재 커서 위치 다음에 파일을 읽어 삽입한다.
       :14 r filename  => 14행 이후에 파일을 읽어 삽입한다.
       :10             => 10번째 줄로 커서를 이동시킨다.
       :10, 20d        => 10번째 행에서 20번째 행까지지운다.

     (참고) 줄 번호를 쓸 때 '.'는 현재 줄을, '$'는 끝줄을 의미하므로 ':3,$d'는 3번째행에서
           끝행까지 지운다는 의미가 된다. 또 첫줄부터 현재 커서가 위치한 줄까지를 지우려면
           ':1,.d'라고 쓰면 된다.

    ㄴ. 문자열의 치환
      :s/문자열/새문자열       => 커서가 위치하고 있는 줄의 첫번째 해당문자열을 새문자열로
                                 치환한다.
     :s/문자열/새문자열/g     => 커서가 위치하고 있는 줄의 모든 해당문자열을 새 문자열로 치
                                 환한다.
      :1,$ s/문자열/새문자열/g => 파일 전체에 대해 해당문자열을 새문자열로 치환한다.
                                :%s/문자열/새문자열/g 와 같다.

5. vi편집기의 환경설정
(1) 설명 : vi환경설정을 위해서는 명령모드에서 :set을 사용한다.
(2) 사용법
   1)설정
     set [환경변수][=값]
   2) 해제
     set no환경변수
(3) 환경변수
   1) ignorecase : 문자열을 검색할 때 대소문자에 관계없이 검색한다.
   2) number     : 행의 앞에 행번호를 붙여준다. 약자로 'nu'라고 해도 된다.
   3) autoindent : 라인변경시 커서의 위치를 바로 위라인의 수준과 같이 해준다. 프로그램작성시에 용이하다. 약자로 'ai'라고 해도 된다.
   4) showmatch  : '}'또는 ')'를 입력하였을 경우 짝이되는 '{','('를 찾아 커서가 1초동안 머무르다 돌아온다. 이 기능은 C등의 프로그램을 작성할 때 편리하다. 약자로 'sm'이라고 해도 된다.
   5) showmode   : 화면 아래쪽에 현재 모드를 표시한다. 즉 편집모드인 경우에 'INSERT'등의 값으로 표시해준다. 기본값으로 설정되어 있다.
   6) tabstop    : 탭의크기를 표시한다. '=n'를 붙이면 탭의크기를 n값에 따라 부여할 수 있다.
(4) 사용예
   1) :set 
       => 여러가지 환경 변수를 설정한다. set all하면 현재 설정되어 있는 환경변수를 보여준다.
   2) :set nu
       => 행의 앞에 행번호를 표시한다. ':set number'와 같다.
   3) :set nonu
       => 행의 앞에 붙은 행번호 표시를 없앤다.
   4) :set ai
       => [Enter]키를 입력하면 행을 바꾸었을 경우 위 줄과 같은 열에 커서를 위치시킨다.
   5) :set noai
       => 'ai'설정을 해제한다. ':set noautoindent'와 같다.
   6) :set ignorecase
       => 명령모드에서 문자열을 검색시에 대소문자를 구분하지 않는다. 즉 '/linux'라고 입력하면
         linux, Linux, LINUX 등의 모든 문자열을 찾아준다.
   7) :set noignorecase
       => 검색시에 대소문자를 구분하도록 한다.
   8) :set tabstop
       => 현재 설정된 탭의 크기(기본값은 4)를 보여준다.
   9) :set tabstop=8
       =>탭의 크기를 10으로 바꾼다.
   10) :set noshowmode
       => 리눅스에서는 기본적으로 모드를 표시해준다. 즉 입력모드인 경우에는 화면하단에INSERT 등을 표시해준다. 위와 같이 명령을 내리면 모드전환을 해도 표시해주지 않는다.
(5) 관련파일 : .exrc
   1) 설명: set명령을 사용자의 홈 디렉토리의 .exrc(또는 .vimrc)안에 써 놓으면 vi가 시작될 때  디폴트로 설정되어 시작하게 된다.
   2) 사용법
     set [환경변수] [값]
   3) 사용예
     [posein@www posein]$ cat .exrc
     set nu
     set ai
       => vi편집기 실행할 때마다 각 행 앞에 행번호를 붙여주고 autoindent를 적용한다. ':'는 적지 않는다.

'Unix/Linux' 카테고리의 다른 글

tgz 압축/푸는 법  (0) 2014.02.27
.svn 파일 삭제하는법  (0) 2014.02.27
Linux에서 getch() 구현  (0) 2013.03.15
Linux에서 _kbhit() 구현  (0) 2013.03.15
^M 문자  (0) 2013.03.14
:

review/preview

실습/데이터베이스 2010. 11. 16. 12:27
:

Oracle 설정 추가

실습/데이터베이스 2010. 11. 7. 22:43
Oracle 10g 이후 웹에서도 DB를 관리할 수 있는 Http Server(isqlplus)가 가능하다.
하지만 Oracle의 웹관리 서버는 기본으로 8080 포트를 사용하기 때문에 tomcat 과 같은 웹서버를 같이 사용하고자 할경우 포트 번호가 같아 충돌이 날수 있다.
해결 방법은 두가지 Oracle의 Http Server 포트 번호를 변경하거나, tomcat에 sever.xml 의 포트 번호 변경하면 된다.
그중에 추천하는 것은 Oracle 쪽을 변경하는 것이다.

변경방법은 sqlplus에서 시스템관리자로 접속 후
 
 - 현재 isqlplus 포트번호 확인
SQL>select dbms_xdb.getHttpPort() from dual;
 
- 포트 번호 변경 (8000은 원하는 포트번호)
SQL>exec dbms_xdb.setHttpPort(8000);

변경 확인 방법은 http://localhost:8000/apex 또는 http://127.0.0.1:8000/apex




: