HAML 파일에서 Broken VIM CompleteFunc을 디버그하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1875965

  •  18-09-2019
  •  | 
  •  

문제

사용 중입니다 Rails.vim 그리고 나는 당신이 사용할 수있는 방법을 좋아합니다 Ctrl-x Ctrl-U 삽입 모드에서 자동 완성 된 긴 메소드 이름과 같은 distance_of_time_in_words 그리고 accepts_nested_attributes_for. 그러나 어떤 이유로 든 Haml 파일에서는 작동하지 않으며 무엇이 잘못되었는지 또는 수정하는 방법을 알아낼 수 없습니다.

:help i_CTRL-X_CTRL-U 자동 완성이 사용 중이라고 말합니다 completefunc. HAML 파일은 그 말을합니다 completefunc=syntaxcomplete#Complete (그리고 ERB 및 도우미 파일에서 동일합니다. Ctrl-x Ctrl-U 잘 작동합니다.) 나는 어디에 있는지 찾을 수 없다 syntaxcomplete#Complete 마술은 정의되지만 아마도 필터 타입 구문과 관련이있을 것입니다. 나의 .vim/syntax/haml.vim 에서 오는 vim-haml, 그래서 나는 그것을 제거하려고 시도했지만 문제는 지속됩니다. 내 전체를 언급합니다 .vimrc 도 도움이되지 않았습니다. 또 무엇을 시도 할 수 있습니까?

업데이트 : VIM 구성 파일을 검색했으며 무엇이든하는 것처럼 보이는 유일한 장소를 검색했습니다. syntaxcomplete#Complete 들어 왔습니다 autoload/rails.vim 그리고 다음과 같이 보입니다.

function! s:resetomnicomplete()
  if exists("+completefunc") && &completefunc == 'syntaxcomplete#Complete'
    if exists("g:loaded_syntax_completion")
      " Ugly but necessary, until we have our own completion
      unlet g:loaded_syntax_completion
      silent! delfunction syntaxcomplete#Complete
    endif
  endif
endfunction
도움이 되었습니까?

해결책

이름이 # 인 함수는 자동로드 스크립트에 정의됩니다.

자동로드 할 수있는 함수는 다음과 같은 이름입니다.
: filename#funcname () 호출
이러한 함수가 호출되고 아직 정의되지 않은 경우 Vim은 "filename.vim"이라는 스크립트 파일에 대해 'runtimepath'의 "autoroad"디렉토리를 검색합니다. 예를 들어 "~/.vim/autoload/filename.vim"입니다.

보다 :help autoload.

다른 팁

당신이 찾고있는 파일이 VIM의 일부인 것 같습니다.

$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim

거기에 vim.org 페이지 최신 버전의 스크립트와 함께.

완료를 사용자 정의하려면 자신의 완료 기능을 작성할 수 있습니다. 보다 :help complete-functions

당신은 또한 사용할 수 있습니다 Ctrl 키+N Vim의 간단한 완료를 사용합니다. 열린 파일의 텍스트로 완료되지만 사용자 정의 할 수 있습니다. (보다 :help 'complete')

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top