2012-09-28 2 views
8

저는 첫 번째 vim 플러그인 (viml + python)을 작성하고 있습니다. 플러그인에있는 하나의 명령은 "GetStepCommand()"이며 기본적으로 원격 데이터 소스에서 데이터를 가져오고 데이터를 약간 마사지하여 버퍼에 복사하여 사용자가 편집을 시작할 수 있도록합니다. 사용자가 "GetStepsCommand"에 제공해야하는 매개 변수가 있으며 그 위치는 데이터가있는 곳의 검색 경로입니다 (예 :/projects/procedure/step)Vim 플러그인 - 명령 모드에서 매개 변수의 사용자 정의 자동 완성

경로가 길어서 miss-spell 뭔가. 그래서 매개 변수 부분에 대해 자체 탭 완성을 구현하려고했습니다. Vim은 탭으로 자동 완성 명령을 처리하지만 물론 매개 변수를 완료하는 방법에 대해 알지 못합니다 (직접 해결할 내용).

는하지만 먼저 내가 알 필요가 : - I 명령 모드 의 키 누름을 가로 챌 수있는 방법/경우 - 을가 명령 모드에 있는지 검사 - 사용자가 현재 을 쓰고 명령 줄을 얻을/가져 오기 삽입 /보기 모드 - 마지막으로 키 누르기 후 사용자가 계속 ':'에 쓸 수있는 업데이트 된 명령 줄 (탭 완성)을 반환합니다. 사용자 정의 명령에 대한 인수가 파일 시스템 경로 인 경우

는 모든 포인터, 팁, 기사, 자습서 ... 즉 정보는 크게, 그것은 단순히 :command 정의에 -complete=file 추가의 문제,

답변

6

을 감사합니다 다음과 같이 : (이것은 다른 플러그인 나쁜 상호 작용으로 이어질 것를 들어, 당신이 안와!)

:command -nargs=1 -complete=file MyCommand echomsg <q-args> 

당신은 명령 줄 모드에서 키 누름을 차단 할 필요가 없습니다 빔은 다른 기본 완료 (CP를 제공 :help :command-complete을.), 심지어 Vimscript 함수가 invo 인 사용자 정의 함수 완료 후보자를 결정하기 위해 ked.

+0

팁 주셔서 감사합니다. 그러나 인수는 파일 시스템 경로가 아니며 데이터를 버퍼에서 가져 오는 시스템의 데이터 (DB의 경로를 설명)입니다. 그래서 내가 자동 완성에 대한 내 자신의 처리를해야 할 필요가 있습니다. –

+0

": command -complete"에 대한 참고를 가져 주셔서 감사합니다 ... 방금 그걸 가지고 놀았습니다 ... 여기에서 아무 문제가 없어야합니다. –

+2

@ KristofferNordström이 특정 완료 유형에 대한 한 가지주의 사항 :'-complete = file'은 이름 외에 완료 옵션이 아닙니다. 파일을 완성하는 작업을 완료하고, 환경 변수를 확장하고, 이스케이프 처리되지 않은 공간을 입력하지 못하도록합니다 ** (보통'-nargs = 1' 및'MyCommand ab' 인수는'ab'입니다), ** 패턴을 확장하고 백틱 확장을 수행합니다 ** (이러한 확장이'-nargs'가 허용하는 것보다 많은 파일 이름이되는 경우 오류를 반향합니다). 그리고이 모든 것들은 도움이되지 않습니다. – ZyX

관련 문제