2012-09-28 15 views
8

Piszę moją pierwszą wtyczkę vima (viml + python). Jednym z poleceń, które posiada wtyczka, jest "GetStepCommand()" i zasadniczo pobiera dane ze zdalnego źródła danych, masuję nieco dane i kopiuję je do bufora, aby użytkownik mógł rozpocząć edycję. Istnieje parametr, który użytkownik musi podać do "GetStepsCommand" i jest to ścieżka wyszukiwania do miejsca, w którym znajdują się dane, np./Projects/procedure/stepWtyczka Vima - niestandardowe automatyczne uzupełnianie paramów w trybie poleceń

Teraz ta ścieżka może być długa i łatwa do zrobienia coś nieczytelnego. Tak więc chciałem zaimplementować własne uzupełnianie dla części parametrów. Vim już zajmuje się autouzupełnianiem polecenia przez tabulację, ale oczywiście nie może mieć żadnej wiedzy o tym, jak uzupełnić parametr (coś, co sam sobie rozwiążę).

Ale najpierw muszę wiedzieć: - czy/jak mogę przechwytywać naciśnięcie klawisza w poleceń trybu - pobranie/uzyskać wiersza polecenia, które użytkownik aktualnie jest pisanie - test, czy to w poleceń trybu lub insert/view-mode - i na koniec zwraca zaktualizowany wiersz polecenia (zakończony tabulacją), który użytkownik może kontynuować pisanie w ':' po naciśnięciu klawisza.

Wszelkie wskazówki, porady, artykuły, tutoriale ... czyli informacja jest mile widziana

Odpowiedz

6

Gdy argument polecenia niestandardowego jest ścieżką systemu plików, jest to po prostu kwestia dodawania -complete=file do definicji :command, tak:

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

nie trzeba do przechwycenia naciśnięć klawiszy w trybie wiersza poleceń (i nie powinien, dla prowadziłoby to do złych interakcji z innymi wtyczek!) Vim oferuje inne domyślne Realizacje (CP :help :command-complete.), nawet niestandardowy, w którym funkcja Vimscript jest fakturowana ked, aby określić kandydatów do ukończenia.

+0

Dzięki za wskazówki, przejrzę je. Jednak argument nie jest ścieżką systemu plików, jej danymi (opisującymi ścieżkę w DB) z systemu, w którym przeciągam dane do bufora. Dlatego właśnie będę musiał wykonać własne przetwarzanie automatycznego uzupełniania. –

+0

Dziękuję za odniesienie do ": command -complete" ... właśnie skończyłem grać z tym ... nie powinno być problemu stąd. –

+2

@ KristofferNordström Jedna uwaga dotycząca tego konkretnego typu uzupełniania: '-complete = file' nie jest opcją uzupełniania oprócz swojej nazwy. Dopełni to do ukończenia plików, ** rozszerzy zmienne środowiskowe, uniemożliwi wpisanie pustej przestrzeni ** (zwykle z '-nargs = 1' i' MyCommand ab' argument będzie 'ab'), ** będzie rozwiń wzory i wykonaj rozszerzenie backtick ** (powtarzając błąd, jeśli te rozszerzenia dają więcej nazw plików niż pozwala na to opcja '-nargs'). I żadna z tych rzeczy nie jest wymieniona w pomocy. – ZyX

Powiązane problemy