Проблема автодополнения Eclipse

Только что установил Eclipse Helios (Win7 64), и у меня возникла странная проблема. Я набираю syso-Ctrl-Space, который должен завершиться до System.out.println(""), но это не работает! Я искал в Интернете около часа, я установил «Настройки»> «Java»> «Редактор»> «Помощник по содержимому» по умолчанию, ничего. Все остальное вроде работает. Идеи?
Для ясности: ярлык работает, он завершает все, кроме «syso», как видно до сих пор, на syso (также пробовал sysout) он говорит «Нет предложений по умолчанию». Я не смог найти такие ярлыки в Content Assist, но я все равно установил их по умолчанию.


person Eugene Marin    schedule 18.03.2011    source источник
comment
eclipse.org/downloads/packages/eclipse-ide-java- разработчиков/ это то, что у вас есть? Java-версия? Не классическое затмение или что-то еще.   -  person F. P.    schedule 19.03.2011
comment
Eclipse IDE для разработчиков Java. Версия: Helios Service Release 2. Идентификатор сборки: 20110218-0911.   -  person Eugene Marin    schedule 19.03.2011
comment
Мой также не автозаполняет эту конкретную строку. Обычно это выглядит как Sys(auto-complete).out.pr(auto-complete)()   -  person F. P.    schedule 19.03.2011
comment
Вы имеете в виду, что это проблема с этой версией Eclipse? Это работало в Galileo и предыдущих...   -  person Eugene Marin    schedule 19.03.2011
comment
Вы недавно устанавливали какие-либо инструменты, которые могут перехватывать это сочетание клавиш?   -  person jbasko    schedule 19.03.2011
comment
Автодополнение работает. Он завершает все, что я пробовал до сих пор, кроме syso.   -  person Eugene Marin    schedule 19.03.2011
comment
пожалуйста, посмотрите мой ответ, я не понимаю, почему все эти недействительные комментарии... это хороший вопрос, и на него есть ответ   -  person Peter Perháč    schedule 19.03.2011


Ответы (11)


Если автозаполнение по-прежнему не работает, попробуйте включить Предложения шаблонов в меню Помощь по содержанию. Это точное местоположение,

Windows->Preferences->Java->Editor->Content Assist->Advanced

И убедитесь, что у вас есть только одна запись для syso (в меню Шаблоны).

person PraveenMax    schedule 24.09.2011

Я считаю, что правильным шаблоном является «sysout», и я считаю, что это можно где-то настроить, но не могу сказать, где. Попробуйте sysout, а затем Ctrl+Space. Это шаблон, вы можете найти все шаблоны в разделе

Окно -> Настройки -> Java -> Редактор -> Шаблоны

Там вы можете увидеть, что имя шаблона «sysout», это затем вызовет замену строки для System.out.writeln(), но вы можете изменить как имя шаблона (если вы предпочитаете syso), так и/или фактический код, созданный путем вызова шаблон

Ваше здоровье

person Peter Perháč    schedule 18.03.2011
comment
Спасибо. Должен сказать, что я не мог заставить его работать так, как он установлен по умолчанию, но я создал свой собственный шаблон syso с типом Java, который работал. Спасибо всем :) - person Eugene Marin; 19.03.2011
comment
Sysout › ctrl + пробел только что выдавал мне оператор печати. Теперь он дает мне этот выбор private void Sysout() {//TODO Auto-generated method stub}. Почему это происходит? Шаблон говорит System.out.println(${word_selection}${});${cursor}. Что дает ? - person Erran Morad; 28.04.2014
comment
Черт... нашел причину. Я делал Sysout вне блока/метода кода. - person Erran Morad; 28.04.2014

Я использую Eclipse Galileo и столкнулся с той же проблемой. Даже после того, как вы попробовали предложенные выше решения, но это не сработало. После внесения приведенных ниже изменений он, наконец, выходит.

  1. Перейдите в Windows->Настройки->Java->Редактор->Шаблоны.
  2. Выберите шаблон sysout и отредактируйте его.
  3. Измените контекст с оператора Java на Java.

И это сработало для меня. Я надеюсь, что это будет полезно для вас.

person Binay Sharma    schedule 26.07.2015

Как сказал Питер, это находится в разделе Window -> Java -> редактор -> шаблоны. Найдите строку со следующими значениями.

sysout Операторы Java Печать в стандартном формате

превью должно быть таким...

System.out.println(${word_selection}${});${cursor}
person Bill    schedule 18.03.2011
comment
Да, это там. Я тоже установил его по умолчанию, и он включен. Все еще не работает (я должен написать sysout и автозаполнение? Пробовал). - person Eugene Marin; 19.03.2011
comment
Один вопрос, одна мысль. 1. Работают ли другие автозаполнения, например syserr? 2. Возможно, по какой-то причине среда IDE не считает, что вы работаете с файлом Java. Щелкните правой кнопкой мыши файл, затем свойства, затем посмотрите Тип, чтобы увидеть. - person Bill; 19.03.2011
comment
Вы должны включить предложения шаблонов для автозаполнения, связанного с кодом Java. См. мой ответ ниже. - person PraveenMax; 24.09.2011

Ваш курсор должен быть расположен в месте, где было бы законно получить эту строку. Если ваш курсор находится внутри определения метода и вы набираете syso, вы получите замену. Однако, если ваш курсор находится в части текста за пределами определения какого-либо метода, например, там, где вы объявляете переменные для своего класса, тогда syso не будет предлагать недопустимую строку system.output.println();.

У меня была эта проблема, я прочитал все ответы здесь, убедился, что она ДОЛЖНА работать в моей копии, и понял, что набирал syso НИЖЕ закрытия } моего последнего метода, а не в методе.

Затмение на!

person mwengler    schedule 16.03.2012
comment
Привет, mwengler, как я уже сказал здесь: stackoverflow. com/questions/5358767/ Я набираю правильно. Я также сказал, что если я наберу его вручную, он компилируется и работает, только автозаполнение не работает. Кажется, это очень редкая ошибка, так как люди просто не верят мне :) и это происходит только в одном классе, который я видел до сих пор, но я повторюсь: я набираю легальный код в легальном месте, я Я не новичок в программировании на Java. - person Eugene Marin; 18.03.2012
comment
Обратите внимание, что это не всегда «syso», многие другие автокомпенсации не работают в определенных методах. Единственное, что особенного в этом классе, это глубина кода. У него есть внутренние классы, в которых я реализовал методы, которые открывают потоки, получая исполняемые объекты, реализующие run() и т.д. и т.д... Но я хотел бы сказать, что в первых 100 строках все работает нормально, это нижние строчки где пришлось все прописывать вручную. - person Eugene Marin; 18.03.2012
comment
Я добавил класс в свой ответ. Не лучший дизайн, но это то, что я сделал тогда. Например, когда я печатаю загруженный файл или загружаю резервную копию, это не завершает syso, но, как вы можете видеть, это правильно. - person Eugene Marin; 18.03.2012

Вы можете попробовать установить ярлык Content Assist с помощью ALT + L, если это сработает, вы можете снова выбрать свой любимый ярлык. (Сочетание клавиш Ctrl+Пробел конфликтует с сочетанием клавиш переключения метода ввода). В eclipse на linux сочетание клавиш для завершения слов — ALT+/, поэтому, если вы установите его как сочетание клавиш Content Assist, оно также будет конфликтовать.)

person cfh008    schedule 20.01.2013

Просто перейдите по указанному ниже адресу:

Windows->Настройки->Java->Редактор->Помощник по содержимому->Дополнительно

и нажмите восстановить по умолчанию..........это все

его работа как шарм снова.

person Mayank Nema    schedule 18.07.2014

Также проверьте это меню затмения: Windows -> Настройки -> Java -> Внешний вид -> Фильтры типов

Если вы видите здесь java.* или javax.*, попробуйте удалить его (или Restore Default сделает эту работу) и убедитесь, что это работает, это сработало для меня.

person Imran    schedule 28.06.2012

Только что нашел решение для Eclipse Luna: напишите syso, нажмите CTRL+Пробел и нажмите «включить интеллектуальное завершение кода», и все готово. Я уверен, что вы можете найти его где-нибудь в опциях, но так это быстро и легко!

person Georgi    schedule 11.09.2014

ГРЯЗНОЕ ВРЕМЕННОЕ РЕШЕНИЕ: вы можете попробовать следующий AutoHotkey-Code, если вы все еще боретесь, как я (ВСЕ ЕЩЕ не удалось исправить это самостоятельно)

#persistent
#ifwinactive ahk_class SWT_Window0  ; eclipse java
:*:syso::
sendraw System.out.println()`;
loop, 2
    send {left}
return
#ifwinactive

Вам нужно записать это в файл .ahk и запустить (должен быть установлен AutoHotkey). Вы можете поместить этот файл в папку автозагрузки. Это очень полезный инструмент, возможно, однажды вы захотите его расширить.

person phil294    schedule 09.12.2014

Возможно, у вас есть перекрывающиеся ярлыки. Перейдите в «Обзор», а затем в подраздел «Ключи». Введите «ctrl + пробел» в разделе «Фильтровать текст». Вы должны увидеть «помощь по содержимому» и, возможно, другую команду с тем же ярлыком. Если существует другой ярлык, измените его ярлык на что-то другое.

person Ömer Sadık Aytaç    schedule 11.12.2014