В Vim вы можете нажать, .
чтобы повторить последнее изменение, включая вставку текста.
Пока в Emacs C-x
z
повторяется только последняя команда. Я знаю, что здесь можно использовать макросы, но чаще всего я понимаю, что мне нужно вставлять тот же текст слишком поздно. Когда мне нужно вставить его еще раз , определение макроса бессмысленно.
Q: Есть ли способ повторить вставку текста в Emacs?
C-f
поиск и т. Д.)? Если это имеет какой-то смысл ...C-space
переместите курсор,M-w
чтобы скопировать), а затем вставляюC-y
столько раз, сколько необходимо.Ответы:
dot-mode
является «второстепенным режимом для повторения ввода или команд» и может делать то, что вам нужно. Это в основном просто повторяет последние вставки / удаления, которые вы делаете. Это очень похоже на.
в Vi (м).источник
dot-mode
и как он обеспечивает функциональность, которую пытается получить OP?Вы можете использовать
kmacro-edit-lossage
(C-x C-k l
) для этого: он позволяет вам просматривать ваши 300 последних нажатий клавиш (включая простые вставки) и редактировать их как макрос.Для простого использования вы просто найдете начало вставки, которую хотите повторить, удалите весь текст из «Macro:» до этой точки и нажмите
C-c C-c
. Теперь у вас есть макрос, который вы можете использовать для выполнения тех же действий, как если бы вы не забыли записать его в первую очередь.К сожалению, это не работает, если последние 300 нажатий клавиш включают щелчки мыши.
Редактировать: следующий код изменяет его так, что сохраняются только ключи после последнего события мыши.
источник
edmacro-fix-menu-commands
. Он принимает необязательный аргумент, который может игнорировать события мыши. Но я не знаю достаточно о системе рекомендаций, чтобы заставить ее работать.Я думаю, что
dabbrev-expand
функция могла бы добиться цели. Предположим, вы уже набрали несколько слов: emacs, emotion, emoji, ... В следующий раз, когда вы введете слово, начинающееся с 'em', вы можете нажать,M-/
и emacs предложит вам вставить одно из уже вставленных слов. начало их. Продолжайте нажимать,M-/
и Emacs покажет вам «эмодзи», затем «эмоции, затем ...»Вы также можете посмотреть на команду repeat-complex-command . Популярный пример: вы хотите повторить команду
query-replace
во многих разных буферах, всегда используя одни и те же аргументы, замените «pitt» на «patt».Вы запускаете его один раз, переходите в другое окно и вводите
C-x ESC ESC
его снова.И в заключение, могу ли я предложить повторную вставку ? Этот файл el поможет вам выполнить вставку, используя некоторую логику. Это больше похоже на «повторную вставку последней вставки, но для каждой итерации аргументы будут меняться.
Этот пример можно найти в файле el :
Я надеюсь, что это поможет.
источник
repeat
(что упоминается в OP) и не очень полезна для вставки текста.Repeat-insert
нужно подумать, прежде чем вставлять текст, как макрос. Ноdabbrev-expand
это хорошая идея!