Есть ли в Emacs завершение слов и строк (например, завершение режима вставки в Vim)? - PullRequest
9 голосов
/ 19 января 2010

Vim дополняет слова и строки с помощью CTRL-X P и CTRL-L.. Есть плагин Emacs, который называется режимом Company, но этот плагин мешает и вызывает конфликты со многими вещами в Emacs (с глобальными linum и yasnippets). Я знаю, что могу завершать слова с помощью CTRL- / в Emacs. Но возможно ли взять ранее написанные строки для завершения кода?

Ответы [ 5 ]

7 голосов
/ 19 января 2010

Может быть, вы ищете hippie-expand ? С этой веб-страницы (на момент написания статьи):

HippieExpand смотрит на слово раньше указать и пытается расширить его в различные способы, включая расширение от фиксированный список (например, expand-abbrev), расширяется из соответствующего текста, найденного в буфер (например, dabbrev-expand) или расширение способами, определенными вами функции. Какой из них он пытается и в каком порядке контролируется настраиваемый список функций.

Полный список параметров завершения можно найти на странице emacs wiki по завершении .

.
3 голосов
/ 19 января 2010

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

2 голосов
/ 07 июля 2013

Используйте числовой аргумент для завершения строкой, скажем, M-5 M-/ будет завершаться строкой, в то время как один M-/ все еще завершает обычный путь.

Функция

hippe-expend имеет очень полезную функцию:

With a positive numeric argument, jumps directly to the ARG next function in this list. With a negative argument or just C-u, undoes the expansion.

Настройте функции расширения в hippie-expand-try-functions-list и поместите функцию try-expand-line в качестве 5-го элемента списка, затем вы можете использовать M-5 M- / для завершения по строке.

Этот совет очень удобен и полезен, и я настоятельно рекомендую его.

1 голос
/ 19 января 2010

Также стоит отметить: если ваш оконный менеджер не крадет Alt-tab, emacs автоматически завершит работу с Alt-tab (я настроил мой оконный менеджер на использование «клавиши Windows» вместо alt по этой самой причине).

0 голосов
/ 27 апреля 2017

Если вы используете evil, это наиболее похожее на vim решение, которое я использую:

  (defun my-expand-lines ()
    (interactive)
    (let ((hippie-expand-try-functions-list
           '(try-expand-line-all-buffers)))
      (call-interactively 'hippie-expand)))

  (define-key evil-insert-state-map (kbd "C-x C-l") 'my-expand-lines)

Таким образом, вы можете использовать нашего старого друга C-x C-l в режиме вставки для завершения всей строки всех буферов.

Спасибо @ymln за предложение использовать try-expand-line-all-buffers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...