Автоматическое завершение 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