vim 7.0에서 omni completion기능을 어떻게 사용해야 하나요?

rainblow의 이미지

vim7.0을 설치했습니다.
처음 설치해서 어찌 어찌 쓰다가 omni completion을 경험했었는데..
지금 다시 하려니,
option 'omnifunc' is not set
이라는 에러 메세지가 나오는군요.

제가 아무래도 정확한 사용법을 잘못 이해하고 있나봅니다.
7.0 설치해서 사용하시는 분 가르침 부탁드립니다.

primus의 이미지

.vimrc에

filetype plugin indent on

을 넣으면 자동으로 인덴트기능 + 타입에 맞게 완성기능이 동작합니다.
파일타입에 따른 자동인덴트 기능을 사용하고 싶지 않으시면,
/usr/local/share/vim/vim70/autoload에 있는 complete plugin을 보고
수동설정하시면 됩니다.

set omnifunc=ccomplete#Complete "C의 경우
set omnifunc=htmlcomplete#Complete "Html의 경우

그리고 ctags로 tag를 미리 만들어 놔야 태그 되어진 태그 인덱스도
완성목록에 뜰겁니다.

단축키는 입력상태에서 ^x^o
이전 버젼에도 지원했던 ^n^p도 또 메뉴리스트로 뜨더군요.

자세한 사항은 :h complete-functions

happy vimming~

rainblow의 이미지

혹시 이전버전의 어떤 설정사항들이 간섭을 일으키는 걸까요?
위에 설명해주신것처럼 filetype plugin indent on 을 .vimrc에 넣은후
Ctrl+X, Ctrl+O를 해보면 아래와 같은 에러가 납니다.

Error: Required vim compiled with +python
E117: Unknown function: pythoncomplete#Complete

혹시 말씀해주신 /usr/local/share/vim/vim70/autoload/
의 파일들이 잘 로드가 안되는건가 해서,

:set omnifunc=pythoncomplete#Complete

를 한후에 다시 해봐도 같은 상황이네요.

시스템은 RH9.0 이고, 이전 vim은 6.1 이었습니다.(이녀석은 /usr/bin/vim이네요. 새로 설치한것은 /usr/local/bin/vim이구요.)

혹시 좀더 살펴볼곳은 어디일까요?
(참고로 C++ 파일을 열고 같은 방식으로 해보면,
Omni completion (^O^N^P) Pattern not found
에러가 나네요.)

primus의 이미지

Vim을 컴파일할때 python옵션을 안주고 하셨네요..
vi에서 :version으로 python옵션이 켜져있는지 확인하세요.

아직 C++은 omni에서 지원안합니다.
Bram이 좀 있다가 추가할지도 모른다고 하는데, 기본은 C입니다.

rainblow의 이미지

./configure --enable-pythoninterp=/usr/local/bin/python --with-python-config-dir=/usr/local/lib/python2.4/
와같이 configure한후에,
make,
make install 하였습니다.

vi를 실행시킨후, :version해보면,

VIM - Vi IMproved 7.0 (2006 May 7, compiled May 17 2006 16:37:54) 라고 시작하고.. 중간에..

-python

으로 나오는군요.
컴파일할때 주어야 할 옵션이 제가 위에 적은게 전부가 아닌가 봅니다.
다시 한번 가르쳐 주시면 감사하겠습니다.

primus의 이미지

아마도 python 개발 header와 라이브러리를 설치 안하신것 같네요.

/usr/include /usr/lib 밑에 python관련 헤더와 라이브러리를 찾아보세요.

없으면 설치하셔야 할겁니다. 설치를 하셨는대도 그러면, 라이브러리와

헤더가 제대로 링크가 안걸려 있어서 그럴겁니다.

컴파일시 gcc log에 -I/usr/include/에 python관련 링크가 제대로 걸리는지

확인하세요.

rainblow의 이미지

말씀하신대로 현재버전(2.4.2)은 찾아보니 없습니다.
하지만 OS설치할때 함께 설치되었던 2.2 관련 디렉토리는 모두 있군요.
그렇다면 2.4에만 있는 omni completion이 동작할때만 에러가 나고,
그렇지 않으면 동작해야 하는거 아닐까요?

아니면, 책을보고 파이썬을 설치했는데, 아무래도 옵션을 덜 준걸까요?
./configure --with-threads 로 python을 설치했습니다.
라이브러리와 헤더를 설치하려면 다른 옵션을 더 주어야 하는건가요?
--enable-shared
를 주고 새로 설치하면 될까요?

다시 설치를 해봤습니다.
Python은,

python은 2.4.3버전을 다운 받아,

./configure --with-threads --enable-shared
make
make install

로 설치했구요,
vim은,

./configure --enable-pythoninterp=/usr/local/bin/python --with-python-config-dir=/usr/local/lib/python2.4/
make
make install

/usr/include와, /usr/lib 에는 각각 /usr/local/lib과 /usr/local/include의 python디렉토리를 link해주었습니다.

그래도 안되네요.
방법을 아시면 부탁드립니다.

@질문이 계속될수록 부끄럽군요.

primus의 이미지

python으로 개발할일은 없지만 함 해봤습니다.

<shell>./configure --enable-cscope --enable-multibyte --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.4/config 
.............
checking Python version... 2.4
checking Python is 1.4 or better... yep
checking Python's install prefix... /usr
checking Python's execution prefix... /usr
checking Python's configuration directory... (cached) /usr/lib/python2.4/config
..............
<shell>make
make[1]: Entering directory `/home/primus/INSTALL/vim/vim7/src'
CC="gcc -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include     -I/usr/X11R6/include    -I/usr/include/python2.4 -pthread   " srcdir=. sh ./osdef.sh
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include     -g -O2  -I/usr/X11R6/include    -I/usr/include/python2.4 -pthread    -o objects/buffer.o buffer.c
................
 
<shell>vi
:version
VIM - Vi IMproved 7.0 (2006 May 7, compiled May 17 2006 21:30:14)
포함된 패치: 1-17
Compiled by primus@dapper
보통 판 GTK2 GUI.  기능 (+: 포함됨, -: 포함 안 됨):
-arabic +autocmd +balloon_eval +browse +builtin_terms +byte_offset +cindent +clientserver
+clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +cryptv +cscope +cursorshape
+dialog_con_gui +diff +digraphs +dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi
+file_in_path +find_in_path +folding -footer +fork() +gettext -hangul_input +iconv
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap
+menu +mksession +modify_fname +mouse +mouseshape -mouse_dec -mouse_gpm -mouse_jsbterm
-mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype
+path_extra -perl +postscript +printer -profile +python +quickfix +reltime -rightleft -ruby
+scrollbind +signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title +toolbar
+user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore
+wildmenu +windows +writebackup +X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
 
        시스템 vimrc 파일: "$VIM/vimrc"
        사용자 vimrc 파일: "$HOME/.vimrc"
         사용자 exrc 파일: "$HOME/.exrc"
       시스템 gvimrc 파일: "$VIM/gvimrc"
       사용자 gvimrc 파일: "$HOME/.gvimrc"
    시스템 차림표 파일: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/local/share/vim"
컴파일: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include     -O2 -fno-strength-reduce -Wall  -I/usr/X11R6/include
  -I/usr/include/python2.4 -pthread
링크: gcc  -L/usr/X11R6/lib   -L/usr/local/lib -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0   -lXt -lncurses -lacl -L/usr/lib/python2.4/config -lpython2.4 -lutil -lm -Xlinker -export-dynamic

root로 ldconfig함 해주시고요..그래도 안되면 저도 모르겠습니다. ㅡㅜ;;

rainblow의 이미지

정말 감사합니다.
알려주신대로 다시 컴파일 하니 잘 되는구요.

계속되는 질문에 이렇게 친절한 답 주셔서 감사합니다.
복받으실거에요. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.