2009-06-28 2 views
9

Я знаю, что я могу получить завершение слова через CTRL+N & CTRL+P и код завершения через omnifunc с CTRL+XCTRL+O. Я дополнительно попробовал Supertab (очень приятно), потому что я привык к завершению TAB. Все это сработало. Я хотел бы видеть возможные совпадения, пока я набираю текст, поэтому я также попробовал autocomplpop.vim, ведьма делает именно это.Слово/код завершения в VIM

То, что я хотел бы достичь, хотя, было бы сочетание обоих вместе с небольшой поворот: Я хотел бы видеть предложения всплывал, как я типа (так же, как с autocompop), но когда я использую TABслово должно быть расширен только к наибольшему общему матча:

foo bar testor booze test baz teter 
te<TAB> 

После того как я типа te во 2-й линии, всплывающий следует предложить test, teter и testor.

Когда я нажимаю TAB, он ничего не должен делать, потому что нет более общего основания, чем te. После того, как я набрал дополнительный s и нажмите TAB, он должен развернуть tes до test (поскольку это наименьшая общая земля) и до testor после второго TAB.

Edit: Я стараюсь быть более ясным ...

  • te<TAB>
    • не должны делать ничего, потому что "мы" не знаем, если а 'т' (тэ t er) или «s» (te s t, te s tor).
  • tes<TAB>
    • должна расширяться test (потому что работает для обоих - испытание и Testor - и Teter уже не возможно совпадение).
  • test<TAB>
    • следует расширить до testor (единственно возможного матча).

Ну, предложения всплывать только бонус, но я действительно хотел бы видеть TAB поведение. Надеюсь, я не доберусь до эзотерического здесь, и вы можете помочь мне с некоторыми скриптами или плагинами, чтобы приручить VIM, чтобы сделать именно это.

+0

Разве это не "тест" возможное совпадение для "test "? Вот как это относится к bash ... (Помимо этого третьего случая, ваши примеры завершают правила отображения bash ...) – Stobor

ответ

6
:set completeopt=longest,menu,preview 

может быть?

(я не уверен, если ваше заявление

«когда я нажимаю TAB, он не должен ничего делать, потому что нет более общий язык, чем те»

конфликты с вашим позже заявление

"в Testor после 2-TAB."

Мне кажется, что в этой точке нет более общего основания, чем «тест». Если вы не имеете в виду, что первая вкладка идет на самую длинную общую точку, а затем последующие вкладки проходят через другие совпадения, и в этом случае вы 're после того, что у меня выше ...)

+0

Если я использую ': set completeopt = longest, menu, preview' и нажмите вкладку после' te', она будет завершена на 'testor'. Это не то, что я хотел бы выполнить. – Brutus

+0

У кого-то у суперпользователя был аналогичный вопрос (http://superuser.com/questions/117490/vim-autocompletion-making-xu-expand-to-longest-match), и они сказали, что SuperTab возился с самым длинным. Вы пытались отключить супертаб? – idbrii

+0

: set completeopt = самый длинный, меню - это то, что вы хотите. – qed

Смежные вопросы