Vim은 JS 파일을 열 때 CPU 사용량이 높습니다

Vim은 JS 파일을 열 때 CPU 사용량이 높습니다

Vim, 특히 Gvim은 대용량 .js 파일(1000줄 이상)을 열 때 응답을 멈추고 CPU를 100% 사용합니다. Ctrlc프로세스를 중지하려면 누르세요 . Vim이 파일을 열어서 무엇을 하려고 해도 파일 내용이 표시되며(모두 한 번 접혀 있음) 삽입 모드에서 입력한 각 문자가 화면에 나타나는 데 몇 분 정도 걸립니다. 그런 다음 파일을 편집하려면 Vim을 다시 시작해야 합니다.

동일한 파일이라도 매번 발생하는 것은 아니고 하루에 3~5번 발생합니다.

사용할 때 strace -p PID계속 반복되는 다음 메시지가 표시됩니다.

poll([{fd=7, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN}], 5, 0) = 0 (Timeout)
read(7, 0x7fffc4477280, 16)             = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(6, 0x21848f4, 4096, 0, 0, 0)   = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN}], 5, 0) = 0 (Timeout)
read(7, 0x7fffc4477280, 16)             = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(6, 0x21848f4, 4096, 0, 0, 0)   = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN}], 5, 0) = 0 (Timeout)
read(7, 0x7fffc4477280, 16)             = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(6, 0x21848f4, 4096, 0, 0, 0)   = -1 EAGAIN (Resource temporarily unavailable)
...

나는 이것을 시도했지만 vim --noplugin같은 문제가 발생했습니다. 저는 Ubuntu 12.04.1 x64에서 자체 컴파일된 Vim을 실행하고 있습니다. vim :version다음 정보를 고려하면:

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug 15 2012 17:16:57)
Included patches: 1-631
Huge version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent    +clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope +cursorbind
+cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +fork() +gettext -hangul_input
+iconv +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse +mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm
+mouse_netterm -mouse_sysmouse +mouse_xterm +mouse_urxvt +multi_byte +multi_lang -mzscheme +netbeans_intg +path_extra -perl +persistent_undo +postscript +printer +profile +python -python3
+quickfix +reltime +rightleft +ruby +scrollbind +signs +smartindent -sniff +startuptime +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
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/local/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I /usr/include/libpng12   -I/usr/local/include  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc   -L.  -rdynamic -Wl,-export-dynamic  -L/usr/local/lib -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0   -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -lm -ltinfo -lnsl   -ldl     -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions   -lruby-1.9.1 -lpthread -lrt -ldl -lcrypt -lm  -L/usr/lib

설정에 문제가 있나요? 무엇이 문제일까요?

답변1

JS 파일 편집을 위해 추가 플러그인이나 구문 파일을 제거해 보세요. 잘못 작성된 vim 스크립트나 구문 파일(기본적으로 정규식 모음)로 인해 Vim이 즉시 모든 CPU 주기를 소모하게 될 수 있습니다.

관련 정보