Приветствую.
Поскольку перехожу на emacs с eclipse, то у меня emacs настроен максимально похожим на него, т.е. cua-mode и т.п.
Такую штуку обнаружил при работе с clipboard, например я вырезал текст (Ctrl-X), потом нашел место куда его вставить, расчистил
место удалив неск строк (Ctrl-y), нажимаю вставить (Ctrl-V) и Оппаньки! - снова вставляются эти самые строки, а то что я вырезал наглым образом потеряно!
В общем надеюсь примерно понятна суть проблемы, т.е. надо бы как-то вообще убрать kill-ring или сделать его отдельно от иксовой clipboard, может кто сталкивался ?
как сделать земной copy-paste
Модератор: /dev/random
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: как сделать земной copy-paste
(setq kill-ring-max 1) Думаете, это Вас спасёт и магическим образом «где-то» сохранит именно тот Ctrl-V (или Alt|Ctrl-W в Emacs), который Вы хотите, а не последний сделанный?
Чтобы удалять не захламляя kill-ring обратите внимание на функции delete-(backward-char|char|region|и пр.).
Мои розовые очки
-
- Сообщения: 59
- ОС: Ubuntu 12.04 LTS
Re: как сделать земной copy-paste
watashiwa_daredeska писал(а): ↑04.03.2011 13:10(setq kill-ring-max 1) Думаете, это Вас спасёт и магическим образом «где-то» сохранит именно тот Ctrl-V (или Alt|Ctrl-W в Emacs), который Вы хотите, а не последний сделанный?
Чтобы удалять не захламляя kill-ring обратите внимание на функции delete-(backward-char|char|region|и пр.).
Т.е. можно попробовать переопределить все соотв биндинги чтобы вместо kill было delete ?
Я сделал попытку, но получилось не очень, например не нашел аналога для kill-whole-line.
Надеялся что может существовать более элегантное решение, может еще какая волшебная опция существует ?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: как сделать земной copy-paste
Чтобы что? Чтобы emacs проапгрейдил X'ы и у всех магическим образом появился его kill-ring? Или как?
Сформулируйте внятно и четко алгоритм, тогда можно будет думать, как его реализовывать. Если он будет не слишком дикий, то может хватить elisp'а в ~/.emacs.
Мои розовые очки
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как сделать земной copy-paste
а нельзя было удалять НЕ в буфер, а скажем в какой-нить "регистр"? ну например в vim'е можно удалить строчку так "xdd
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: как сделать земной copy-paste
DIY:
Код: Выделить всё
(defun delete-whole-line (&optional arg)
"Deletes current line.
With prefix ARG, delete that many lines starting from the current line.
If ARG is negative, delete backward. Also delete the preceding newline.
\(This is meant to make \\[repeat] work well with negative arguments.\)
If ARG is zero, delete current line but exclude the trailing newline."
(interactive "p")
(or arg (setq arg 1))
(print arg)
(if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp)))
(signal 'end-of-buffer nil))
(if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp)))
(signal 'beginning-of-buffer nil))
(cond ((zerop arg)
(delete-region (progn (forward-visible-line 0) (point))
(progn (end-of-visible-line) (point))))
((< arg 0)
(delete-region (save-excursion (forward-visible-line (1+ arg))
(unless (bobp) (backward-char))
(point))
(progn (end-of-visible-line) (point))))
(t
(delete-region (point) (progn (forward-visible-line 0) (point)))
(delete-region (point)
(progn (forward-visible-line arg) (point))))))
Мои розовые очки
-
- Сообщения: 59
- ОС: Ubuntu 12.04 LTS
Re: как сделать земной copy-paste
watashiwa_daredeska писал(а): ↑05.03.2011 17:50Чтобы что? Чтобы emacs проапгрейдил X'ы и у всех магическим образом появился его kill-ring? Или как?
Сформулируйте внятно и четко алгоритм, тогда можно будет думать, как его реализовывать. Если он будет не слишком дикий, то может хватить elisp'а в ~/.emacs.
Вобщем цель простая: сделать emacs более приближенным к остальным редакторам, где буффер обмена один и копировать туда можно только по ctrl-c,
я думал что это вполне распространенная потребность у людей переходящих с eclipse например и есть уже готовый рецепт.
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: как сделать земной copy-paste
Как избавиться от kill-ring (тогда останется только X'овый буфер), я писал выше, хотя для меня удаление функционала — довольно сомнительное улучшение. Сделать copy/paste/cut по Ctrl-C/V/X тоже можно, если Ctrl-X и Ctrl-C — стандартные префиксы, используемые в Emacs повсеместно — перебиндить на что-нибудь другое.Вобщем цель простая: сделать emacs более приближенным к остальным редакторам, где буффер обмена один и копировать туда можно только по ctrl-c,
Мои розовые очки
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: как сделать земной copy-paste
И ещё, как уже заметили, можно копировать и удалять текст в регистры, а не только в kill-ring.
http://www.linux.org.ru/books/GNU/emacs/emacs_15.html
http://www.linux.org.ru/books/GNU/emacs/emacs_15.html
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж