Ответ 1
Добавьте это в свой .emacs
:
(delete-selection-mode 1)
Все, что записывает буфер, пока область активна, перезапишет его, включая вставку, но также просто набирает что-то или нажимает backspace
Когда я использую VIM или большинство немощных редакторов (Eclipse, NetBeans и т.д.), я часто делаю следующее. Если у меня есть аналогичные текстовые блоки, и мне нужно их изменить, я изменил их, скопировал (или использовал бы ненужный yank), выберите следующий блок, который мне нужен, и вставьте измененную версию поверх него. Если я делаю то же самое в emacs (выберите область и вставьте с помощью C-y), она не заменит область, она просто вставляется в позицию курсора. Каков способ сделать это в emacs?
Добавьте это в свой .emacs
:
(delete-selection-mode 1)
Все, что записывает буфер, пока область активна, перезапишет его, включая вставку, но также просто набирает что-то или нажимает backspace
Настройка delete-selection-mode
, как предположил Майкл, кажется наиболее естественным способом сделать это.
Однако, это не то, что я делаю:) Вместо этого я помещал хороший материал в "регистр" - например, зарегистрировал "a" - с помощью C-x r x a
. Затем я убью другую копию и скопирую регистр на одно и то же место с помощью C-x r g a
.
Это удобно, потому что убийство не влияет на регистры, поэтому C-x r g a
всегда вставляет хорошие вещи.
По умолчанию этот способ выглядит не совсем элегантно:
C-w
).C-y
, M-y
). Это заменяет только что удаленное содержимое тем же самым текстом, который вы только что удалили (C-y
), а затем повторно заменит его на следующий наиболее недавно сохраненный буфер в кольце буфера (M-y
).Это может стать настоящей болью, если вы захотите сделать это 10 раз с тем же текстом, поскольку желаемая замена будет удаляться дальше в кольцо уничтожения каждый раз, когда вы удаляете регион, поэтому вам придется вызывайте M-w
все большее количество раз каждый раз, когда вы хотите его выдернуть.
Я также только что обнаружил M-x delete-region
, благодаря Emacs: как удалить текст без kill ring?. Как следует из этого вопроса, это удаляет оскорбительный текст, не помещая его в кольцо убийства, избегая проблемы с нажатием вашего замещающего текста дальше в стеке. И, как говорится в соответствующем ответе, вы можете привязать это к сочетанию клавиш по вашему выбору.
Если вы активируете CUA-режим, эта вставка над выбранной областью становится нормальным.
Как я это делаю:
Это немного другой способ думать об этом. Вставьте то, что вы хотите, затем избавьтесь от того, чего вы не хотите, вместо того, чтобы заменить то, что вы не хотите, тем, что вы делаете.
Используйте delete-selection-mode
, чтобы вставляемый текст заменял активную область.
Используйте вторичный выбор, чтобы вставлять один и тот же текст снова и снова, даже если вы поочередно выбираете новую область для замены.