2012-11-24 2 views
7

Tab-Vervollständigung mit einem Popup-Menü in vim funktioniert ziemlich gut mit der richtigen Konfiguration. http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDEBenutzerdefiniertes Popup-Menü in VIM

Ich habe eine kleine Sammlung von Code-Generator und Code-Manipulation Programme, die ich in vim verwenden. Das Verfahren ist:

1. initiate visual mode 
2. highlight text 
3. :'<,'>!hashify 

Ich möchte vim Popup-Menü nutzen, um eine Auswahl an Aktionen anzubieten.

würde das neue Verfahren sein:

1. initiate visual mode 
2. highlight text 
3. <Tab> -- select transform option from menu 

Gibt es eine vimscript Schnittstelle, die dafür verwendet werden könnte?

Antwort

2

Das Popup-Fenster zum Eingeben des Einfügemodus kann zum Einfügen einer Auswahl von Textfragmenten verwendet werden. Es gibt zwei Möglichkeiten, es zu implementieren, siehe :help complete-functions und :help complete(). Wenn Ihr Codegenerator einzeilige (und nicht zu lange) Textfragmente zum Einfügen zurückgibt, können Sie den Generator über system(...) aufrufen und dann die zurückgegebenen Werte der Vervollständigungsfunktion zuführen.

Auf der anderen Seite, wenn die Menüoptionen nicht direkt auf eingefügten Text entsprechen, sind aber taktische Entscheidungen oder Handlungen, präsentieren die meisten Plug-in ein Auswahlmenü wie diese, wie integrierten Menüs Stil (zB von :ilist):

:echohl Title 
:echo 'Code fragments:' 
:echohl None 
:echo '1. foo' 
:echo '2. bar' 
:let choice = nr2str(getchar()) 
:if choice == 1 ... 

Dann fügen Sie den Text auf die Auswahl über :normal! iText entsprechenden oder setline().

Da Sie den Abschluss im visuellen Modus benötigen, können Sie den ausgewählten Text zuerst erfassen, indem Sie das Mapping mit y starten.

+0

Es sieht aus wie die Antwort auf meine Frage ist ‚Ja‘. Ich werde ein wenig forschen und experimentieren und sehen, was ich daraus machen kann. Vielen Dank. – ddoxey

Verwandte Themen