문서유형ㅣ기술정보
분야ㅣ모니터링/점검
적용제품버전 ㅣ Tibero 전체
문서번호ㅣTMOTI046
개요
SQL 개발 도구에서 제공하는 Query 자동 완성 기능을 vim script을 이용해 tbsql에서 활용하여 효율적인 업무 수행을 위해 기술하였습니다.
방법
vim script
vim script는 vim 유틸리티 실행 시 미리 설정되기 원하는 환경 옵션/변수를 적용하기 위해 사용됩니다.
vim script configuration
vim 유틸리티가 기본으로 사용되도록 설정합니다.
$HOME/.bash_profile 또는 $HOME/.bashrc 또는 $HOME/.profile
export EDITOR=vim
[*] vim script 파일 생성 및 내용 추가합니다.
[*] let은 사용할 Query를 변수로 지정합니다.
[*] map은 vim 명령 모드에서 단축키로 사용할 명령입니다.
$ vi $HOME/.vimrc
"---------------------------------------------------------
" TIBERO tbsql Go to query (tbGTQ)
let q1="SELECT * FROM "
let q2="SELECT * FROM dba_objects WHERE owner not in ('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1')"
let q3="SELECT b.owner,sum(b.byte) /1024/1024/1024 FROM dba_objects a, dba_segments b WHERE a.object_name = b.segment_name AND a.owner not in ('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1') GROUP BY b.owner"
let q4=""
let q5=""
let q6=""
let q7=""
let q8=""
let q9=""
let q10=""
" TIBERO Shortcut keys
map <F1> :call setline('.',getline('.').q1)<CR>
map <F2> :call setline('.',getline('.').q2)<CR>
map <F3> :call setline('.',getline('.').q3)<CR>
map <F4> :call setline('.',getline('.').q4)<CR>
map <F5> :call setline('.',getline('.').q5)<CR>
map <F6> :call setline('.',getline('.').q6)<CR>
map <F7> :call setline('.',getline('.').q7)<CR>
map <F8> :call setline('.',getline('.').q8)<CR>
map <F9> :call setline('.',getline('.').q9)<CR>
map <F10> :call setline('.',getline('.').q10)<CR>
" "---------------------------------------------------------
[*] tbsql에 editor의 명령 모드에서 사용합니다.
[*] .vimrc에서 map에 지정한 단축키를 명령 모드에서 사용합니다.
$ tbsql sys/tibero
F1 단축키
SELECT * FROM
~
~
~
:call setline('.',getline('.').q1)
F2 단축키
SELECT * FROM dba_objects WHERE owner not in
('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1')
~
~
~
:call setline('.',getline('.').q2)
F3 단축키
SELECT b.owner,sum(b.byte) /1024/1024/1024 FROM dba_objects a, dba_segments b WHERE
a.object_name = b.segment_name AND a.owner not in
('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1') GROUP BY b.owner
~
~
~
:call setline('.',getline('.').q3)
.vimrc 분리
이미 $HOME/.vimrc를 사용 중인 경우 또는 별도로 query 자동 완성 기능만 분리하고 싶다면 하기와 같이 진행 합니다.
[*] query 자동 완성 옵션만 별도 파일로 생성합니다.
| $ vi tbGTQ.vim |
"--------------------------------------------------------- " TIBERO tbsql Go to query (tbGTQ) let q1="SELECT * FROM " let q2="SELECT * FROM dba_objects WHERE owner not in ('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1')" let q3="SELECT b.owner,sum(b.byte) /1024/1024/1024 FROM dba_objects a, dba_segments b WHERE a.object_name = b.segment_name AND a.owner not in ('SYS','SYSCAT','OUTLN','PUBLIC','TIBERO','TIBERO1') GROUP BY b.owner"
let q4="" let q5="" let q6="" let q7="" let q8="" let q9="" let q10=""
" TIBERO Shortcut keys map <F1> :call setline('.',getline('.').q1)<CR> map <F2> :call setline('.',getline('.').q2)<CR> map <F3> :call setline('.',getline('.').q3)<CR> map <F4> :call setline('.',getline('.').q4)<CR> map <F5> :call setline('.',getline('.').q5)<CR> map <F6> :call setline('.',getline('.').q6)<CR> map <F7> :call setline('.',getline('.').q7)<CR> map <F8> :call setline('.',getline('.').q8)<CR> map <F9> :call setline('.',getline('.').q9)<CR> map <F10> :call setline('.',getline('.').q10)<CR> " "--------------------------------------------------------- |
[*] source 또는 so 명령을 추가합니다.
[*] query 자동 완성 옵션 파일은 꼭 절대 경로로 입력해주어야 합니다.
$ vi $HOME/.vimrc
source /home/tibero/tbGTQ.vim
or
so /home/tibero/tbGTQ.vim
query 자동 완성 단축키 변경
[*] query 자동 완성 스크립트 내용 중 map에서 선언 가능합니다.
C를 조합한 알파벳 단축키 또는 펑션키를 활용한 단축키 사용 가능합니다.
" TIBERO Shortcut keys
map <F1> :call setline('.',getline('.').q1)<CR>
" C는 Ctrl, 알파벳 a-z까지 선언 가능합니다. (대소문자 구분 없습니다.)
map <C-a> :call setline('.',getline('.').q1)<CR>
map <C-z> :call setline('.',getline('.').q1)<CR>
" 문자 없이 Ctrl+숫자 단축키 방식 지원하지 않습니다.
map <C-1> :call setline('.',getline('.').q1)<CR>
map <C-10> :call setline('.',getline('.').q1)<CR>
" 연속된 키에 대한 단축키 방식 지원 하지 않습니다.
map <C-a1> :call setline('.',getline('.').q1)<CR>
map <C-a-1> :call setline('.',getline('.').q1)<CR>
" C 없이 사용 되지 않습니다.
map <a> :call setline('.',getline('.').q1)<CR>