KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
You attempt things that you do not even plan because of your extreme stupidity.
FrontPage › VimEditor

목차

1 vim 이란?
2 gvim
3 script
4 plugin
4.1 LaTeXSuite
4.2 유용한 플러그인
5 유용한 팁
5.1 utf-8 문서 편집
5.2 "blabla" 를 (grave grave)blabla(apostrophe apostrophe) 로 일괄적으로 바꾸려면
5.3 리눅스에서 Capslock키를 ESC키로 맵핑하기
5.4 Customize(환경 설정)
5.4.1 내가 사용하고 있는 vim 환경 설정 파일
6 Windows gvim & KC2008
7 Windows gvim & KC2006

1 vim 이란?

과거 UNIX 시스템에서부터 사용되어 온 VI(Visual editor)를 다양한 기능을 넣어 개선시킨 프로그램입니다. 그래서 이름이 VIM("Vi IMproved")입니다. See also ViEditor.

아래 사이트를 참고하면 다양한 자료를 얻을 수 있습니다.

[http]VIM 현재 버전은 7.1입니다. B)

2 gvim

X-Window나 MS-Windows와 같은 GUI 환경에서 쓸 수 있는 VimEditor.

현재 버젼은 6.4 입니다.(20060211)

7.0이 드디어 나왔군요.(20060508 어버이날버전이군요) 7.0에서 개선된 점은 파일탭기능, 스펠체크(영문의 경우 틀린 단어밑에 물결표가...), 유니코드 지원강화, 내장grep등이랍니다. 그런데 설치파일용량이 두배나 되는 군요. 대부분은 언어별 스크립트와 문서들이지만 점점 무거워지고 있다는 생각이듭니다.

3 script

vim안에서 활용할 수 있는 내장 스크립트로 vim의 활용도를 확장시켜 줍니다.

4 plugin


4.2 유용한 플러그인

  1. tex_autoclose.vim
    \begin{***}에 대해 `\end{***}을 자동으로 써줍니다. http://www.vim.org/scripts/script.php?script_id=920

  2. tex_autoclose 변형판
    autoclose (괄호를 자동으로 닫아줍니다) 의 기능을 함께 쓸 수 있습니다. 다만 tex_autoclose, autoclose 저자의 허락없이 코드를 마음대로 복사해서 붙여 만든 플러그인이며 또한 kdvi 에서 inversesearch 기능을 사용할 경우에는 에러가 발생합니다. 다른 dvi viewer 에서는 사용해보지 않아 확인할 수 없습니다만 아마 비슷한 문제가 발생하지 않을까 하는 생각이 듭니다. 원인이 뭔지 모르겠습니다.. ㅠ.ㅠ http://vim.wikia.com/wiki/Tex_Autoclose_working_with_Autoclose

  3. bufexplorer.vim
    현재 편집중인 파일의 목록을 보여줍니다. 명령모드에서 \be \bs \bv http://www.vim.org/scripts/script.php?script_id=42

  4. minibufexpl.vim
    ultraedit 과 같이, 상단에 현재 편집중인 파일의 목록을 보여줍니다. http://www.vim.org/scripts/script.php?script_id=159

  5. latex-mik.vim
    Miktex을 위한 플러그인. 선택한 영역을 환경이나 명령어로 둘러싸주는 기능, 프로젝트관리기능등이 있음. http://www.vim.org/scripts/script.php?script_id=849

  6. cream
    vi의 명령 및 편집모드에 익숙하지 않은 윈도 사용자들을 위한 플러그인 pack. 현재 VIM7.0를 인스톨파일안에 포함하고 있군요.(종합선물세트개념입니다.) 일반적인 윈도편집기들과 같이 마우스로 모든 기능을 사용할 수 있도록 하고 있습니다. 물론 단축키도 다 지정해놨군요. 제가 지금(2006.9.30) 받은 인스톨파일에서는 한글메뉴파일의 코딩이 잘못되어 메뉴가 전부 깨져 보입니다. 메뉴의 저자한테 연락했더니 저자가 사용하고 있는 수정파일을 보내주셨습니다. 다만 이건 VIM 6.x용이랍니다. @cream-korean.zip (4.92 KB) 그래도 /vim70/cream/lang/디렉토리에 압축을 풀고 복사에 넣으면 잘 작동합니다. VIM으로 전환해서도 사용할 수 있습니다. 저는 VIM이 이 정도까지 설정할 수 있을 정도로 유연하다는 예로 파악하고 있습니다만 VIM의 명령어모드와 편집모드가 익숙하지 않으신 분께는 그냥 일반적인 윈도에디터와 동일하게 사용하서도 손색이 없습니다. http://cream.sourceforge.net/

5 유용한 팁

5.1 utf-8 문서 편집

set enc=utf-8
set fenc=utf-8
"(windows vim 일 경우)
set fencs=utf-8,cp949,iso-8859-1
위와 같은 내용을 _vimrc 파일에 추가하면, 새로 작성하는 파일의 인코딩은 utf-8 이 되고, 기존의 파일을 수정하는 경우 fencs 에 정의된 인코딩의 순서대로 적절한 인코딩을 찾습니다. vim 이 파일의 적절한 인코딩을 찾아내지 못했을 때, 다음과 같이 해줄 수 있습니다.
:e ++enc=cp949 (인코딩)
기본값으로 bomb 은 붙이지 않으나 붙이기를 원한다면
:set bomb
붙이지 않기를 원한다면 :set nobomb 합니다.

팁으로 states line 에 현재 편집하고 있는 파일의 인코딩과 bomb 을 표시할 수 있습니다. 다음 페이지를 참고하세요. 또한
:set laststatus=2
라고 하면 status line 이 항상 보이게 됩니다. 현재 저는 다음과 같이 해서 쓰고 있습니다.
:set statusline=%<%f\ %h%m%r%=%{\"[\".&ff.\"][\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\&bomb)?\",B\":\"\").\"]\ \"}%k\ %-14.(%l,%c%V%)\ %P

5.2 "blabla" 를 (grave grave)blabla(apostrophe apostrophe) 로 일괄적으로 바꾸려면


vim 에서 "blabla"``blabla'' 로 일괄적으로 변환하고 싶을 경우 다음과 같이 해주면 됩니다. (vi.kldp.org 의 milko 님께서 알려주셨습니다.)

:%s/\v"(\S|\S\_.{-}\S)"/``\1''/g

"\S" 혹은 "\S\_.*\S" 인 경우에 대해서만 변환합니다. (\S : 공백과 EOL 을 제외한 모든 문자, \_. : EOL 을 포함한 모든 문자) (즉 " 전후로 공백 문자가 없는 경우만을 골라서 변환합니다.)

5.3 리눅스에서 Capslock키를 ESC키로 맵핑하기

원래 vi에디터를 개발하던 컴퓨터의 자판은 ESC키가 왼쪽위가 아니라 지금의 Capslock부근에 있었다한다. 그래서 명령어모드로의 전환을 팔을 움직이지 않고 간단히 할 수 있었다고 한다. 지금의 ESC는 왼쪽위의 구석에 있어 귀찮은 면이 있다. 실제로 거의 사용하지 않는 Capslock키를 다음과 같은 방법으로 ESC키로 사용할 수 있다. 물론 ESC키는 여전히 작동한다.

자기의 홈디렉토리에 .xmodmap이라는 파일을 만들고 다음과 같은 내용을 넣어둔다.
remove lock = Caps_Lock
keysym Caps_Lock = Escape

우분투 9.04에서는 시스템-기본설정-키보드-키배치-키배치옵션-CapLock 키동작 에서 선택할 수 있다. 아마도 이전 시스템에서도 될 듯...

키보드 배치를 바꾸기는 싫은데 esc누르려고 손을 움직이기 싫은 사람은 그냥 ctrl-[을 눌러도 된다.

5.4 Customize(환경 설정)

set nocompatible             "vi 비호환 모드. 즉 vim 에서 확장된 명령을 사용할 수 있습니다.
set display+=lastline        "한문단 내에서 줄바꿈하지 않고 한줄로 쓰는 경우 유용 (뭐라고 설명해야 하나 -_-;
set linebreak                "단어 단위로 줄바꿈합니다.
nmap <up> gk                 "화살표를 이용해 이동합니다.
nmap <down> gj
imap <up> <c-o>gk
imap <down> <c-o>gj
set incsearch
set hls                      " 검색한 단어를 highlight 시킵니다.
nnoremap <F7> :set nohls<CR> " F7 키를 누르면 검색한 단어에 대한 highlight 를 disable 시킴
nnoremap n :set hls<CR>n     " /, N, n 등의 키로 검색을 시작하면 highlight enable 시킴
nnoremap N :set hls<CR>N
nnoremap * :set hls<CR>*
nnoremap # :set hls<CR>#
nnoremap / :set hls<CR>/
nnoremap ? :set hls<CR>?
set fileformats+=dos,unix,unix  " 줄바꿈 형식을 자동으로 찾아줍니다.
imap <m-c> <c-o>"+y             " alt-c, alt-v 로 copy & paste 합니다.
vmap <m-c> "+y
imap <m-v> <c-o>"+gp
vmap <m-v> <c-o>"+gp
imap <m-a> <esc>ggVG
set enc=utf-8                   " 새로 작성하는 파일의 인코딩을 utf-8 로 합니다.
set fenc=utf-8
set fencs=utf-8,cp949           " 기존의 파일을 여는 경우 fencs 에 정의된 순서로 적절한 인코딩을 찾습니다.


customize part.


5.4.1 내가 사용하고 있는 vim 환경 설정 파일


$HOME/.vim/ftplugin/plaintex.vim
set breakat=\ ^I
set textwidth=72
set number

""" 탭을 스페이스 두개로 치환.
""" tex파일에서는 이것이 일반적임.
"set expandtab
set softtabstop=2
set shiftwidth=2

""" @을 특수문자 아닌 일반문자로 인식. 
""" sty파일 편집시 명령 자동완성에 유용.
set iskeyword=@,@-@

set formatoptions+=ro

DeleteMe sts=2et에 모든 magic이 있으므로 set ts=2는 넣지 않는 것이 낫습니다. vim말고 다른 tab size를 지원하지 않는 프로그램에서는 tab이 엉클어질 확률이 높아지기 때문에 ts는 언제나 8(이것이 기본값) 해두는 것이 낫습니다. --WkPark

$HOME/.vim/ftplugin/tex.vim
source $HOME/.vim/ftplugin/plaintex.vim

compiler tex

""" 상호참조 키를 완성할 때 유용.
set iskeyword=@,@-@,:

""" :make 실행시 xelatex 실행되도록 설정
set makeprg=xelatex\ -synctex=1\ -interaction=nonstopmode\ %<.tex

""" forward search from tex to pdf
""" 터미널 빔에서는 각 단축키 끝에 <C-l>을 추가해야 화면이 바르게 된다.
""" for skim on mac
map <F5> :w<CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline <C-r>=line('.')<CR> %<.pdf %<CR><CR>
""" for evince on linux
"map <F5> :w<CR>:silent !~/bin/evince_forward_search %<.pdf <C-r>=line('.')<CR> %<CR>

""" 몇 가지 단축키. 
""" 입력 언어를 전환할 필요없어 세벌식 사용자에게 유용.
inoremap <buffer> '' `'<left>
inoremap <buffer> "" ``''<left><left>
imap <C-t> <CR><Esc>i<Bslash>item<Space>
imap <C-t><C-t> <CR><Esc>i<Bslash>item[]<Left>
imap <C-t><C-b> <CR><Esc>i<Bslash>bibitem{}<Left>

""" section 에서 폴딩을 가능하게 한다.
""" cntl-s cntl-q 따위는 gvim에서만 동작. 터미널 빔에선 안 됨.
""" 굳이 하자면 쉘에서 stty -ixon -ixoff 명령으로 동작하게 한다.
""" *** 아래에서 { { {, } } } 사이의 공백은 지워야 함 ***
""" *** 아래에서 &#8226; 은 불릿 기호(U+2022)임 ***
imap <C-s> <Bslash>section{&#8226;} %{ { {<CR><CR>%} } }<Esc>?&#8226;<CR>xi
set foldmethod=marker

""" 문단 재정렬 명령
nmap <C-q> gqap

""" 자주 쓰는 환경을 편하게 입력한다.
""" 입력모드에서 Ctrl-E 를 누르고 환경이름 한 두 글자 치고 <Tab>  
""" 노멀모드에서는 :E 한 뒤 환경이름 한 두 글자 그리고 <Tab>
command! -complete=custom,ListENV -nargs=1 E execute "normal i\\begin{<args>}<CR>\\end{<args>}<Esc>k$a<Space>" | startinsert
function! ListENV(A,L,P)
  return "itemize\nenumerate\ndescription\ntabular\nfigure\ntable\nquote\nquotation\ndocument\nthebibliography"
endfunction
imap <C-e> <Esc>:E<Space>

6 Windows gvim & KC2008


^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2011-04-19 21:49:00
Processing time 0.0581 sec