Можно ли использовать vim для автозаполнения имен функций, переменных и т. Д. При его использовании для программирования?
56
Многие IDE автоматически заполняют имена функций, переменные, имена методов и т. Д. В качестве пользовательских типов. Лучшие из них дополняют имена, основываясь как на встроенной библиотеке языка, так и на том, что уже было определено в других файлах той же программы.
Например, когда я набираю следующую программу на Python:
hungy = True
def eatFood(food):
pass
if hungry:
eatF
строка eatFбудет автоматически отображаться eatFood()как доступная опция автозаполнения.
Есть ли у Vim такая возможность? Если так, как я могу включить это?
В vim есть много разных вариантов автозаполнения. Одним из способов может быть использование SuperTab . Это дает возможность использовать табуляцию более или менее в любое время. Это позволит вам нажать Tabпосле частичного ввода слова, чтобы получить список завершения. Например, введите, eatFа затем TabразвернутьeatFood.
Пожалуйста, обратите внимание : эти картинки все ссылки на примеры GIF в действии.
У Vim есть отличные другие варианты. Вы должны прочитать, :h ins-completionчтобы увидеть множество встроенных вариантов завершения. Использование vim's Ctrl- XCtrl- в Oсочетании с плагином с поддержкой Python, таким как jedi, может дать завершающий вкус. Джедаев можно настроить для предоставления документации по омни-завершению (это то, что Ctrl- XCtrl- Oделает). Тогда документация для кандидатов на прохождение появится в разделенном окне.
Использование похожих плагинов, но разных опций приводит к разного рода поведениям. Например, возможно, не нужно запрашивать автозаполнение (если это то, что вам нужно). Вместо этого после того, как вы наберете некоторое количество букв (скажем, 2 или 3) слова, плагин может попытаться разумно предложить возможные дополнения в меню.
Таким образом, короткий ответ - да! Но процесс настройки может быть немного сложным. Я думаю об этом как о шаге по длинной лестнице освоения vim.
Я перепробовал их все и всегда возвращаюсь в SuperTab, это наименее навязчиво.
Craigp
1
Мне также очень нравится плагин YouCompleteMe, так как он предлагает, как вы печатаете, и вы можете выбирать или игнорировать предложения. Да, визуально это трудно игнорировать, но это очень ненавязчиво в моем рабочем процессе, потому что требует меньше нажатий клавиш.
процветает
3
Я изменил анимацию так, чтобы она была «на клике», в том смысле, что она связана с анимацией GIF.
Давидловрыдуда
1
Я не могу использовать YouCompleteMe на своем рабочем компьютере, потому что у меня нет root для установки зависимостей, SuperTab - безусловно, лучший выбор.
Чарльз Клейтон
@mixedmath В моем случае superTab не работает.
Алхелал
24
Такая функциональность - то есть поиск текущего файла (и всех открытых файлов) для автозаполнения, должен быть включен по умолчанию с помощью Ctrl+P:
Вы можете перейти к н доб внушения с Ctrl+N, в р revious предложение с Ctrl+Pи выбрать его, введя любую букву (который будет добавляться сразу после внушения).
Редактору (Джаспер): Скорее всего, я хочу снова написать что-то, что я написал недавно, а не то, что я напишу в будущем, или это будет в начале файла. Поэтому ^Pболее естественно ИМХО. В противном случае спасибо за редактирование (надеюсь, я нажал правую кнопку, и вы получили +2).
лет»
1
Да, я получил эти воображаемые интернет-очки :) Я всегда думал, что список предложений будет отсортирован в алфавитном порядке ...
Джаспер
@ Порядок появления Джаспера это (по крайней мере, для меня, конечно, также см. Выше: world,word,woodи не наоборот). Так же ^Pкак и последнее использованное завершение, что очень удобно (я редко иду дальше 3 пунктов в списке, даже в длинном файле).
лет»
protip:inoremap <C-Space> <C-N>
wchargin
20
Vim имеет встроенную поддержку для завершения. Вы можете прочитать о различных дополнениях, которые поддерживает Vim :h ins-completion.
В общем, для всех целей, которые я нашел, достаточно дополнений по своему вкусу, однако есть некоторые плагины завершения, которые добавляют больше ценности, чем предлагают дополнения. NeoComplete , YCM (YouCompleteMe) несколько для того же. Они более продвинуты в том смысле, что они пытаются более точно комбинировать различные типы дополнений, и у них также есть усовершенствованные механизмы кэширования, поэтому они, как правило, работают быстрее. YCM даже доходит до работы с внешними компиляторами / утилитами для обеспечения лучшего IntelliSense.
Да, сценарии автозаполнения для vim существуют. «Лучший» выбор зависит от вашего языка программирования. Поскольку ваш пример кода Python, я предлагаю взглянуть на джедая . Создайте поверх этого, что вы завершили меня существует, который также поддерживает другие языки, но иногда рассматривается как слишком большой. Для других языков вы можете просмотреть длинный набор скриптов vim .
Такая функциональность - то есть поиск текущего файла (и всех открытых файлов) для автозаполнения, должен быть включен по умолчанию с помощью
Ctrl+P
:Вы можете перейти к н доб внушения с
Ctrl+N
, в р revious предложение сCtrl+P
и выбрать его, введя любую букву (который будет добавляться сразу после внушения).источник
^P
более естественно ИМХО. В противном случае спасибо за редактирование (надеюсь, я нажал правую кнопку, и вы получили +2).world,word,wood
и не наоборот). Так же^P
как и последнее использованное завершение, что очень удобно (я редко иду дальше 3 пунктов в списке, даже в длинном файле).inoremap <C-Space> <C-N>
Vim имеет встроенную поддержку для завершения. Вы можете прочитать о различных дополнениях, которые поддерживает Vim
:h ins-completion
.В общем, для всех целей, которые я нашел, достаточно дополнений по своему вкусу, однако есть некоторые плагины завершения, которые добавляют больше ценности, чем предлагают дополнения. NeoComplete , YCM (YouCompleteMe) несколько для того же. Они более продвинуты в том смысле, что они пытаются более точно комбинировать различные типы дополнений, и у них также есть усовершенствованные механизмы кэширования, поэтому они, как правило, работают быстрее. YCM даже доходит до работы с внешними компиляторами / утилитами для обеспечения лучшего IntelliSense.
источник
Да, сценарии автозаполнения для vim существуют. «Лучший» выбор зависит от вашего языка программирования. Поскольку ваш пример кода Python, я предлагаю взглянуть на джедая . Создайте поверх этого, что вы завершили меня существует, который также поддерживает другие языки, но иногда рассматривается как слишком большой. Для других языков вы можете просмотреть длинный набор скриптов vim .
источник
В режиме вставки введите первые пару символов слова, затем нажмите:
Это особенно полезно при вводе имен переменных в программе.
Опция 'complete' определяет, где будут выполняться поиск по ключевым словам (включая файлы, файлы тегов, буферы и т. Д.).
Опция 'completeopt' контролирует, как происходит завершение (например, отображается ли меню).
источник