2010-10-25 16 views
9

在vim中,我使用Ctrl-n在插入模式下完成字的填充。如果有多個可能的匹配項,我可以使用箭頭鍵從中選擇一個可能的匹配項。使用'j'和'k'導航的vim字完成

但是,我不想使用箭頭鍵;我想用'j'和'k'鍵。但是當我輸入'j'或'k'時,它會插入字母,而不是在下拉菜單中上下移動。有沒有一種方法可以配置vim以我想要的方式執行此操作?

+0

簡言之到這樣一個問題:幾年後,我的VIM的工作流程是這樣的,我不會做這種定製了。我寧願讓vim成爲我可以在任何地方使用的編輯器,包括隨機的Linux服務器和其他人的機器。爲此,我只使用默認的鍵綁定。對於更多自定義的東西,我使用emacs。 – kerkeslager 2016-06-16 20:23:34

回答

15

:hpopupmenu-keys

沒有專門設置映射在彈出菜單子模式,但你可以做一個有條件的插入模式的映射:

inoremap <expr> j pumvisible() ? "\<C-N>" : "j" 
inoremap <expr> k pumvisible() ? "\<C-P>" : "k" 

這使得j/k導航彈出菜單像<C-N>/<C-P> ,而它是可見的。

附錄:如果你希望能夠在控制,以存放在您鍵入jk,你可以使用分別<C-J><C-K>,取代它們。 (請參閱mwcz對此答案的評論。)

+4

使用此方法時可能遇到的一個問題是,他/她可能希望在調用完成菜單後繼續鍵入,並且他/她希望鍵入的字母是'j'或'k'。很高興知道未來會出現什麼樣的後果。 – tinifni 2010-10-25 16:45:58

+4

@tinifni可以使用' j'和' k'來做到這一點。 – ZyX 2010-10-25 17:20:20

+4

由於您已經按下了Ctrl,我發現使用'C-j'和'C-k'來瀏覽列表很方便。它不會干擾打開列表時繼續打字: 'inoremap pumvisible()?「\ 」: 「\ 」'和' inoremap pumvisible()? 「\ 」:「\ 」' – mwcz 2012-06-13 15:19:56

7

我不知道如何用j和k做到這一點。你處於插入模式,他們不工作。

但是,我有另一種方式適合你,按Ctrl +ñ工作一樣的標籤,你可以使用 - 標籤下井名單和標籤上去。這比使用箭頭鍵更容易。但不如j和k好。

或者你也可以只使用按Ctrl +ñ按Ctrl +P

+5

並且'CTRL-Y'接受,'CTRL-E'丟棄。 – Benoit 2010-10-25 16:31:33