Автоматично завършване на Vim, както с текущия файл, така и с речника

Във Vim можем да постигнем завършване на кода, като използваме речници или текущия файл, за да излезем с предложения. Но това, за което се грижа, е да имам и двете.

Моят vimrc има следното завършване на кода:

"k=uses dictionary, i=uses current and included files, t=tag completion.
set complete-=k
set complete+=k
set dictionary+=/some_path/some_file

Използвайки това, мога или да използвам речник, или текущия файл. Но това, което искам, е да видя и двете едновременно.

Как да направя това?


person john-jones    schedule 02.01.2014    source източник
comment
Между другото: не е нужно да :set-= / :set+=, за да осигурите уникални стойности; Vim се справя с това автоматично. Или го правите, за да промените реда?!   -  person Ingo Karkat    schedule 02.01.2014
comment
Прочетох това тук: vim.wikia.com/wiki/Dictionary_completions   -  person john-jones    schedule 03.01.2014


Отговори (1)


Завършването по подразбиране (<C-N> / <C-P> в режим на вмъкване) използва източниците, конфигурирани в 'complete'. Ако тази стойност на опцията съдържа . и k, се вземат предвид както текущият буфер, така и речникът (може скоро да видите съобщения като Scanning tags... и т.н. след задействане на завършване, които показват текущия източник, в който се търси).

Това е цялата цел на завършването по подразбиране; за разлика от това, трябва да използвате различни команди за завършване (напр. <C-X><C-K> за речник), за да използвате един източник.


Редактиране: Трябва да се уверите, че стойността k действително продължава; ~/.vim/view/ предполага, че възстановявате записан изглед; опитайте да изчистите тези изгледи и да премахнете съществуващия си .viminfo файл, за да замените всички стари постоянни стойности на 'complete'.

person Ingo Karkat    schedule 02.01.2014
comment
имайки в моя vimrc: set complete=k. и след това този речников ред от моя отговор. Все още не мога да получа автоматичното завършване от речника, без да натисна ctrl-x и след това ctrl-k. - person john-jones; 02.01.2014
comment
Опитайте :set complete=k,. (обърнете внимание на запетаята). Задаването на опция във вашия vimrc е различно от настройването й, докато редактирате. Какво ви казва :verbose set complete? dictionary?, докато редактирате файл? За полезен доклад за грешка, кажете ни какво сте направили, а не какво не сте направили: Съмнявам се, че сте опитали всичко друго освен <C-X><C-K>. По-конкретно, пробвахте ли <C-N> и <C-P> без <C-X>? - person benjifisher; 03.01.2014
comment
дава ми: 'complete=.,w,b,u,t,i Последен набор от ~/.vim/view/~=+.vimrc= dictionary=~/public_html/unix/vim/dictionary/default Последен набор от ~/.vimrc' не мога да не забележа, че няма k в пълните опции, което е странно, тъй като задавам k във vimrc, както предложихте. - person john-jones; 03.01.2014
comment
Така че първопричината е липсващото k от 'complete'. ~/.vim/view/ предполага, че възстановявате записан изглед; опитайте да ги изчистите и да премахнете съществуващия си .viminfo файл. - person Ingo Karkat; 03.01.2014
comment
да, това беше, благодаря! чувствайте се добре дошли да публикувате това като отговор и аз ще го приема. - person john-jones; 03.01.2014
comment
@HermannIngjaldsson Ах, радвам се, че оправихме това! Добавих резолюцията към моя отговор. - person Ingo Karkat; 03.01.2014
comment
чакай сега имам друг проблем, системата винаги замръзва, когато се опитам да използвам автоматично завършване с речника. Той просто казва „съвпадение във файл и след това-пътят-файл-към-речник“ и замръзва така, докато е във vim. Опитах се да променя правилните настройки на речника на 777, опитах се да го поставя в домашната директория и се опитах ръчно да настроя пълното на „k“ и „.“ като направите :set complete=k,. но без резултат. - person john-jones; 03.01.2014
comment
@HermannIngjaldsson Моля, не злоупотребявайте с коментарите за по-нататъшно отстраняване на неизправности. Ако става въпрос за автоматично завършване (с плъгин), това трябва да е отделен въпрос. - person Ingo Karkat; 04.01.2014
comment
не, това не е с плъгин, това все още е средство за постигане на същата цел. Мислех да започна нов въпрос, но след това все още се опитвам да накарам това автоматично завършване да работи както с текущия файл, така и с речника. - person john-jones; 04.01.2014
comment
и така направих последващо действие: stackoverflow.com/questions/20968671/ - person john-jones; 07.01.2014