2015-04-20 2 views
2

Я пытаюсь использовать Emacs, потому что он кажется немного приятнее, чем Notepad ++.Завершение кода в Emacs

Я пытаюсь использовать функцию завершения кода (a.k.a intellisense), но не знаю, как это сделать.

Во-первых, я набираю в M-x, то eval-expression, то в минибуфере, я хочу, чтобы ввести в

(print (font-family-list))

Так что я типа в (print (font-f, а затем нажмите TAB, я получаю окно с содержимым :

Click <mouse-2> on a completion to select it. 
In this buffer, type RET to select the completion near point. 

Possible completions are: 
font-face-attributes 
font-family-list 

я могу использовать мышь, чтобы нажать на второй вариант (font-family-list). Но как выбрать параметр, используя только мою клавиатуру? Каковы сочетания клавиш?

+2

Просто введите символ, который отличает возможности, т. Е. 'M' в этом случае. – choroba

+0

Вы можете использовать 'M-:' вместо 'M-x eval-expression'. – Drew

ответ

0

Я действительно задаю тот же вопрос:

In Emacs, how do I select the completion list with the keyboard?

Из Completion Commands doc и выше ответа, я понял, что мне нужно выполнение switch-to-completions функции. Поскольку M-v не работает для меня, я заканчивал связывание Shift-Tab для перехода к окну заканчивания в то время как в минибуфере:

(define-key minibuffer-local-map (kbd "<S-tab>") 'switch-to-completions) 

EDIT: Mv (или Alt-v) работает для меня на новая установка - однако с момента использования cua-mode она перестала работать.

Я собирался установить minibuffer-complete-cycle, но потом, когда я читал описание, он говорит, что если completion-cycle-threshold переменные устанавливаются в целом число, скажет 3, а затем, если есть 3 или меньше вариантов завершения, то TAB будет циклический их. Мы все еще можем использовать M-v.

Хотя чтение его описания, minibuffer-complete-cycle кажется немного более полированным.

2

В этих ситуациях завершение выполняется через TAB. Завершение добавит уникальные символы до тех пор, пока не произойдет столкновение (в вашем случае он добавил букву «а»). На этом этапе вам нужно ввести следующий символ, который его отличает. Если вы наберете mTAB Emacs выберет font-family-list.

2

У вас может быть лучшая система завершения, но не в мини-буфере, который вы вызываете с помощью eval-expression или M-:.

Предлагаю вам назвать интерактивную нижнюю оболочку elisp с помощью M-x ielm. Теперь вы можете включить завершение company-mode приносит что-то вроде этого:

company-mode completion in shell-mode

Установка компании, которая находится в melpa:

package-install RET company RET 

и назовите его, если вы хотите:

M-x company-mode 

Вы заметите, что он работает в оболочке и на других языках :)

+0

Привет, спасибо за предложение. Но выпадающий список минибуферов был бы хорош для org-mode. Все еще ищет решение. Изменит мой ответ, если найду что-нибудь. –

Смежные вопросы