Действительно ли VIM-омни-доработка так ограничена?Или я что-то упустил? - PullRequest
7 голосов
/ 28 января 2011

Ruby:

file = File.new("some.txt", "r")
lines = file.readlines

Тесты всестороннего завершения

file.readl
   ---------
   readline     <- PASSED
   readlines
   ---------

"hola".capital
   ---------
   capitalize   <- PASSED
   capitalize!
   ---------

lines.
                <-- FAILED (no suggestions)

lines[0].capital
                <-- FAILED (no suggestions)

Я тоже пробовал Python, и он работал аналогичным образом.Похоже, что омни-доработка не может быть использована для реальной разработки, поскольку она не срабатывает в довольно простых случаях?

Я что-то упустил?Может быть, intellisense можно улучшить как Ruby / Python?

1 Ответ

10 голосов
/ 28 января 2011

Проблема в том, что Vim не знает, является ли line строкой, массивом или каким-либо другим классом. В Vim нет глубокого синтаксического анализа. Vim не имеет представления о области видимости, если переменная или метод были определены и т. Д.

Это только предлагает похожие слова. Так что да, Vim в этом аспекте более ограничен, чем IDE. Именно поэтому Eclipse может предлагать ошибки при их вводе, а Vim не может.

Vim гораздо более прост: в некотором смысле, все является текстом и не обязательно рассматривается как "код".

Итак, вы правы, это одно из ограничений Vim.

Есть некоторые плагины для обхода этих ограничений (omnicpp использует ctags для определения области действия некоторых методов), но они часто разрабатываются для каждого языка и не имеют серебряной маркировки.

...