2012-11-24 65 views
7

使用vim中的彈出式菜單進行製表符填充可以很好地處理正確的配置。 http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDEVIM中的自定義彈出式菜單

我有一個代碼生成器和代碼操作程序的小集合,我在vim中使用。程序是:

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

我想利用vim彈出菜單提供一系列操作。

新的程序是:

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

是否有可能被用於這個vim腳本接口?

回答

2

插入模式完成彈出窗口可用於插入文本片段的選擇。有兩種實現方法,請參閱:help complete-functions:help complete()。如果您的代碼生成器返回要插入的單行(不太長)的文本片段,則可以通過system(...)調用生成器,然後將返回的值提供給完成函數。另一方面,如果菜單選項不直接對應於插入的文本,而是戰術選擇或動作,則大多數插件呈現這樣的選擇菜單,如內置菜單樣式(例如,從:ilist):

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

然後,通過:normal! iTextsetline()插入對應於選擇的文本。

由於您似乎需要從可視模式完成,因此您可以先通過以y開始映射來捕獲選定的文本。

+0

它看起來像回答我的問題是「是」。我會做一些研究和實驗,看看我能想出什麼。謝謝。 – ddoxey